C# TextChanged不';t火
我试图在按下“添加更多”按钮时生成文本框,因此这是onclick的代码C# TextChanged不';t火,c#,asp.net,textbox,textchanged,C#,Asp.net,Textbox,Textchanged,我试图在按下“添加更多”按钮时生成文本框,因此这是onclick的代码 protected void Add_TextBoxes(object sender, EventArgs e) { int index = int.Parse(ViewState["pickindex"].ToString()); TextBox MyTextBox = new TextBox(); MyTextBox.ID = "t
protected void Add_TextBoxes(object sender, EventArgs e)
{
int index = int.Parse(ViewState["pickindex"].ToString());
TextBox MyTextBox = new TextBox();
MyTextBox.ID = "tbautogenerated"+index.ToString();
MyTextBox.Text = "tbautogenerated" + index.ToString();
MyTextBox.Width= 250;
MyTextBox.MaxLength = 128;
MyTextBox.Attributes.Add("runat", "server");
MyTextBox.CausesValidation = false;
MyTextBox.AutoPostBack = true;
MyTextBox.TextChanged += new EventHandler(MyTextBox_TextChanged);
picktexts.Controls.Add(MyTextBox);
}
void MyTextBox_TextChanged(object sender, EventArgs e)
{
TextBox MyTextBox = sender as TextBox;
}
但是当我在文本框中更改时,文本更改不起作用!!!怎么了
HTML代码
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div id="picktexts" runat="server">
<asp:TextBox ID="txtAdress" runat="server" MaxLength="128" Width="250" />
<asp:RequiredFieldValidator ControlToValidate="txtAdress" Display="Dynamic" ID="rfvAddress" Text="* Required" runat="server" />
<asp:Button ID="bt_addtxtbox" runat="server" Text="Add more" OnClick="Add_TextBoxes" CausesValidation="false" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
我认为事件处理程序在帖子之间迷失了方向。按照ASP.NET的工作方式,每次将页面发回自身时,所有对象都将再次实例化,并且它们的状态将从ViewState恢复。通常,在aspx中声明的控件会通过其标记中的声明将自身与事件重新关联,但这里的情况并非如此 因此,请在页面加载期间再次尝试关联事件处理程序。像这样:
void Page_Load (object sender, EventArgs e)
{
foreach (Control c in picktexts.Controls)
{
((TextBox)c).TextChanged += new EventHandler(MyTextBox_TextChanged);
}
}
然后查看是否有效。添加断点以确保其执行该部分。新文本框出现,但不订阅文本更改事件?什么意思,不起作用?您是否希望在文本框中键入时触发事件?因为如果是这样的话,默认情况下,它应该只在两篇文章之间触发。请查看事件文档。它只在柱子之间开火。当文本框失去焦点时,可以通过将设置为true来强制发布。否则,在键入字符后强制发布。愉快的编码。动态添加控件时,Viewstate会出错。我使用[ViewState[“AddedControl”]=“true”;]()。第二我不知道即使设置了AutoPostBack,是否也需要设置runat服务器属性,但您尚未设置runat属性。我认为HTML文本更改是不同的。但是kartal至少应该在焦点改变时看到回发事件。我在焦点改变时看到回发事件,但我无法从PickText获取文本框,它是空的!!!正如Renan所说,ViewState将在每个帖子背面重新创建。你能参考一下我在你的问题的评论中分享的链接吗(评论排在第10位)?你的PickText div很可能没有ViewState,或者它没有启用。在这一点上我有些生疏。请查看Yogee的评论。我不理解ViewState部分,你能给我举个例子吗?