如何从动态创建的文本框中检索数据并构建字符串

时间:2017-03-29 23:31:07

标签: c# asp.net

所以我有一些代码,它创建了一行4个文本框。来自这4个文本框的数据将组合在一起进行SQL查询然后执行。添加行的按钮可以无限次地命中。我生成了我的ID,因此在第一次单击文本框中,一个是txtBox1Row1,然后在第二次单击时,它是txtBox1Row2等,等等。

现在我需要一种从每行检索数据并从中构建SQL查询的方法。重申一下,我只需要每个循环中每行4个文本框中的数据(我假设需要这样做)。

那我该如何做呢?

非常感谢,我们非常感谢您的帮助。我打算这样做:

        foreach (Control c in pnlArea.Controls)
        {
            if (c.ID.Contains("ddlArea"))
            {
                area.Add(((DropDownList)c).SelectedValue);
            }
            if (c.ID.Contains("txtArea"))
            {
                areaOther.Add(((TextBox)c).Text);
            }
            if (c.ID.Contains("ddHazard"))
            {
                hazard.Add(((DropDownList)c).SelectedValue);
            }
            if (c.ID.Contains("txtHazard"))
            {
                hazardOther.Add(((TextBox)c).Text);
            }
            if (c.ID.Contains("txtHazardDesc"))
            {
                hazardDesc.Add(((TextBox)c).Text);
            }
            if (c.ID.Contains("txtActionDesc"))
            {
                actionDesc.Add(((TextBox)c).Text);
            }
            if (c.ID.Contains("calDueDate"))
            {
                dueDate.Add(((Calendar)c).SelectedDate);
            }
        }

1 个答案:

答案 0 :(得分:2)

根据Nkosi,您需要在表单中封装文本框“区域”。

我建议循环遍历表单中的每个文本框并存储在字典中。

这可能是这样的:

Dictionary<string, string> textBoxVals = new Dictionary<string, string>();

Control form = this.FindControl("form1") as Control;

TextBox tb;

foreach (Control c in form.Controls)
{
    if (c.GetType() == typeof(TextBox))
    {
        tb = c as TextBox;
        textBoxVals.Add(tb.ID, tb.Text);
    }
}

然后你就可以遍历字典来构建你的SQL字符串。字典将包含控件的动态名称和文本框的值。

根据您发布的代码,看起来可能还有一些其他控件也可能与每一行相关联。如果是这种情况,你可以在foreach循环中创建另一个if语句来处理不同的控件类型,这样你就可以保存它们的正确参数。

我希望有所帮助。