SQL结果中的C#.NET Dynamic TextBox

问题描述 投票:0回答:1

我通常不会提问,但我有兴趣看到不同的想法。我有一个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
        }

我记得能够使用变量引用控件但我无法解决它。在我真正开始使用它之前,我希望听到不同的意见或更好的方法,希望甚至是将数据接收回数据库的好方法。 (目前我正在考虑使用应用程序发送的params动态构建查询。)

更新:如果它有助于进一步解释我的要求,不同的产品类型需要不同的数据收集,我无法承受基于类别或产品类型的硬编码,所以我打算让用户在创建产品/类别时指定数据字段。这个位完成了。当用户扫描产品时,出现数据输入屏幕,并且在UI中动态创建相应的字段。我完成了所有这些工作。我现在只需要知道如何访问控件以填充任何现有数据或检索任何输入的数据然后存储回数据库。

c# asp.net .net sql-server m
1个回答
0
投票

您尝试向命令添加值的方式必须先使用参数名称,然后使用值:

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

我建议使用Add()方法,这样你就可以通过指定数据的类型和长度来限制用户输入。或者甚至更好地创建具有属性Product_Field_ID, Product_ID, SortOrder, Name, Type的模型类,并使用Dapper执行CRUD操作。

© www.soinside.com 2019 - 2024. All rights reserved.