C # .NET Dynamic TextBox из результатов SQL - PullRequest
0 голосов
/ 05 сентября 2018

Я обычно не тот, кто задает вопросы, но мне интересно видеть разные идеи. У меня есть приложение webforms, которое я ищу для динамического заполнения текстовых полей на основе результатов запроса. В основном, если я запрашиваю ниже:

SELECT Product_Field_ID, Product_ID, SortOrder, Name, Type FROM Product WHERE product_id = 100

Я бы получил таблицу результатов следующим образом: enter image description here

Я бы добавил это в интерфейс данных или IEnumerable, а затем перебрал бы для каждого списка, динамически создавая элементы управления.

Для целей этого вопроса я бы использовал что-то вроде следующего:

            int a;
        for (a = 0; a < dt.Rows.Count; a++)
        {
            Label Label = new Label();
            Label.ID = "LabelFortxt" + dt.Rows[a]["Name"].ToString();

            TextBox Text = new TextBox();
            Text.ID = "txt" + dt.Rows[a]["Name"].ToString();

            //Placeholder on the aspx page
            PlaceHolderControls.Controls.Add(Label);
            PlaceHolderControls.Controls.Add(Text);
        }

Мой план состоит в том, чтобы либо заполнить данные, если они требуются, либо пользователь заполнил бы информацию, прежде чем отправить ее обратно в базу данных. Для этого я бы использовал хранимую процедуру с параметрами, добавленными с использованием предыдущей таблицы данных, которую я бы оставил активной в ViewState или Session. Я застрял с нижеследующим, когда дело доходит до добавления информации обратно в базу данных:

            int a;
        for (a = 0; a < dt.Rows.Count; a++)
        {
            Control dynamiccontrolname = dt.Rows[0]["Name"].ToString();
            cmd.Parameters.AddWithValue(dt.Rows[0]["Name"].ToString(), "txt" + dynamiccontrolname.Text
        }

Я помню, что мог ссылаться на элемент управления, используя переменную, но я не могу понять это. Кроме того, прежде чем я действительно начну с этим, я хотел бы услышать различные мнения или лучшие подходы, надеюсь, даже хороший подход к получению данных обратно в базу данных. (в настоящее время я думаю о динамическом построении запроса с использованием параметров, отправляемых приложением.)

ОБНОВЛЕНИЕ: Если это поможет более подробно объяснить мои требования, то для разных типов продуктов требуется разный сбор данных, и я не могу позволить себе жесткий код на основе категории или типа продукта, поэтому я намерен позволить пользователю указывать поля данных при создании продукта / категория. Это немного сделано. Когда пользователь сканирует продукт, появляется экран ввода данных, и соответствующие поля динамически создаются в пользовательском интерфейсе. У меня все это работает. Теперь мне просто нужно знать, как я могу получить доступ к элементам управления, чтобы либо заполнить любые существующие данные, либо извлечь любые введенные данные и затем сохранить их в базе данных.

1 Ответ

0 голосов
/ 05 сентября 2018

При попытке добавить значения к вашей команде вы должны сначала использовать имя параметра, а затем значение:

cms.Parameters.AddWithValue("@yourValueInQuery", dt.Rows[0]["Name"].ToString());

Я бы предложил использовать метод Add(), чтобы вы могли ограничить ввод данных пользователем, указав тип и длину данных. Или даже лучше создать класс модели со свойствами Product_Field_ID, Product_ID, SortOrder, Name, Type и выполнять операции CRUD с помощью Dapper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...