我在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">
答案 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。这样你就可以在之后使用你的数据库了。