如何获取动态添加的文本框的输入值

时间:2016-12-08 07:51:55

标签: c# asp.net forms linq dynamic-programming

我在asp.net中有一个简单的表单,我使用LINQ to SQL将一些数据添加到数据库。

单击按钮,我会动态加载更多文本框。所有这些文本框都有计数器,并在每次加载时获得不同的ID。

我想知道如何从那些动态添加的文本框中获取输入值,因此我可以将该数据输入到数据库中。

意思是,如果用户在文本框中键入"指环",我想在代码隐藏中获取该数据并将其添加到数据库中。

我很容易进入基本形式,我只是这样做:inputValue.Text,但有不同的ID,我有点丢失...

我动态添加文本框的代码

protected void Button1_Click(object sender, EventArgs e)
    {
        counter++;
        TextBox tb1 = new TextBox();
        TextBox tb2 = new TextBox();
        TextBox tb3 = new TextBox();
        TextBox tb4 = new TextBox();
        tb1.ID = "inputAuthor" + counter;
        tb2.ID = "inputBookName" + counter;
        tb3.ID = "inputCategory" + counter;

        LiteralControl lineBreak = new LiteralControl("<br/>");
        ph1.Controls.Add(tb1);
        ph1.Controls.Add(lineBreak);
        controlIdList.Add(tb1.ID);
        ph1.Controls.Add(tb2);
        ph1.Controls.Add(lineBreak);
        controlIdList.Add(tb2.ID);
        ph1.Controls.Add(tb3);
        ph1.Controls.Add(lineBreak);
        controlIdList.Add(tb3.ID);
        ph1.Controls.Add(tb4);
        ph1.Controls.Add(lineBreak);
        controlIdList.Add(tb4.ID);
        ViewState["controlIdList"] = controlIdList;  
    }

更新

动态添加文本框

<input name="dnn$ctr1365$Author$inputAuthor1" id="dnn_ctr1365_Author_inputAuthor1" type="text">
<input name="dnn$ctr1365$BookName$inputBookName1" id="dnn_ctr1365_BookName_inputBookName1" type="text">
<input name="dnn$ctr1365$Category$inputCategory1" id="dnn_ctr1365_Category_inputCategory1" type="text">

默认.aspx表格

<input name="dnn$ctr1365$Author$inputAuthor" id="dnn_ctr1365_Author_inputAuthor" class="form-control" style="background:#fff" type="text">

2 个答案:

答案 0 :(得分:0)

您的流程应如下所示。

<asp:TextBox ID="dnn_ctr1365_Author_inputAuthor" name="dnn$ctr1365$Author$inputAuthor" class="form-control" style="background:#fff" runat="server"></asp:TextBox>

从后端检索数据。

string value = dnn_ctr1365_Author_inputAuthor.Text.toString();
这样的事情会对你有所帮助。 我还没有测试过那段代码,但只是因为流量应该是正确的。

查看此链接,他们将帮助您了解asp.net webform控件。

https://asp-net-example.blogspot.in/2008/10/textbox-example-how-to-use-textbox.html

答案 1 :(得分:0)

如果我理解正确的话。您正在代码隐藏处生成动态文本框。并且您的文本框能够在后端通知更改。

要做到这一点。首先,您必须接受在.Net这样的winform上没有丰富的eventHandler池。只有TextChanged事件,它的行为类似于onBlur或mouseLeave。

要实现这一点,您的动态文本框将类似于

protected void Page_Load(object sender, EventArgs e)
{
    TextBox tb1 = new TextBox();
    tb1.ID = "t1";    
    tb1.Attributes.Add("runat", "server");
    tb1.AutoPostBack = true;
    addEvent(tb1,tb1.ID);
    panel.Controls.Add(tb1);
}

private void addEvent(TextBox tb1,string id)
{
    tb1.TextChanged += (senders, eventArgs) =>
    {
        //do Something with the ID
    };    
}

重点是将AutoPostBack设置为true,以便可以在后端捕获t1的TextChanged。

之后,将为动态文本框的每次更改触发t1_TextChanged。这样你就可以在之后使用你的数据库了。