[英]how to get the text value of dynamically created textbox
我想获取单击按钮时动态创建的文本框的值
我需要这样做,因为我的文本框的值用于从数据库检索数据
我怎么能实现这个目标?
流程为按钮单击-创建文本框-用值填充文本框-按钮单击-获取文本框的文本
这是我制作文本框的代码
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For i As Integer = 0 To 4
textbox = New TextBox With {.ID = "TextBox" & i}
plchld.Controls.Add(textbox)
Next
End Sub
我已经尝试过类似的操作,但是代码不起作用
Protected Sub OkButton_Click(sender As Object, e As EventArgs) Handles OkButton.Click
Dim a(5) As String
For i As Integer = 0 To 4
a(i) = CType(plchld.FindControl("Textbox" & i), TextBox).Text
Next
End Sub
预先感谢您的任何帮助
编辑答案
我找到了解决此问题的方法。 我使用request.form来获取文本框的值。
感谢参加的任何人
问候,
朱利安
这就是我在asp.net应用程序中所做的事情。
创建动态控制
TextBox txtDate = new TextBox();
txtDate.EnableViewState = true;
txtDate.ID = "PreixValue" + 1;
txtDate.Text = "07 Feb 2014"
pnl.controls.add(txtdate);
从该文本框中检索值
DateTime datefrom = DateTime.Now ;
for (int cnt = 0; cnt < Request.Form.Count; cnt++)
{
if (Request.Form.AllKeys[cnt].Contains("Prefixvalue"))
{
int ParamStartPoint = Request.Form.AllKeys[cnt].IndexOf("Prefix") + 4;
int ParamNameLength = Request.Form.AllKeys[cnt].Length - ParamStartPoint;
string[] ControlName = Request.Form.AllKeys[cnt].Substring(ParamStartPoint, ParamNameLength).Split('$');
if (ControlName[0] == "Date From")
{
datefrom = DateTime.Parse(Request.Form[cnt]);
//datefrom has value now
}
}
}
这是我在Web应用程序中所做的事情,但是可能还有其他方法可以实现此目的。
基本上,当您在Webform中创建动态控件时,可以通过Request.Form使用。
希望对您有帮助。
Protected Sub OkButton_Click(sender As Object, e As EventArgs) Handles OkButton.Click
Dim a(5) As String
For i As Integer = 0 To 4
Dim anotherObj As TextBox = Me.Controls.Item("Textbox" & i)
a(i) =anotherObj.Text
Next
问题是动态控件在回发时丢失,因此,在处理OkButton click事件时, plchld控件内部没有任何内容。 如果要在文本框中检索文本,则必须在回发时使用相同的ID重新创建控件。
使用代码,您需要做的就是回发以确定文本框是否已创建,如果是,则重新创建它们。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Determine if the text boxes were created and if so, recreate them.
If CBool(ViewState("TextBoxesCreated")) Then
CreateTextBoxes()
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
CreateTextBoxes()
ViewState("TextBoxesCreated") = True
End Sub
Private Sub CreateTextBoxes()
For i As Integer = 0 To 4
plchld.Controls.Add(New TextBox With {.ID = "TextBox" & i})
Next
End Sub
Protected Sub OkButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OkButton.Click
Dim a(4) As String
For i As Integer = 0 To 4
a(i) = CType(plchld.FindControl("Textbox" & i), TextBox).Text
Next
End Sub
我不知道您在做什么,但是如果您不需要,建议不要动态创建它们。 只需显示或隐藏文本框即可。
参考: http : //www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.