C# 动态创建的文本框';s ContextChanged事件在分配ID时未触发
我阅读了所有相关帖子,但仍然无法理解当前面临的问题。在Oninit上,我创建了带有文本框的表,如下所示,当我为文本框分配id时,不会触发textchanged事件,但当我没有分配id时,会触发textchanged事件。我无法解释原因。请帮忙C# 动态创建的文本框';s ContextChanged事件在分配ID时未触发,c#,asp.net,C#,Asp.net,我阅读了所有相关帖子,但仍然无法理解当前面临的问题。在Oninit上,我创建了带有文本框的表,如下所示,当我为文本框分配id时,不会触发textchanged事件,但当我没有分配id时,会触发textchanged事件。我无法解释原因。请帮忙 protected override void OnInit(EventArgs e) { PopulateTextBoxes(); base.OnInit(e); } protected void Populat
protected override void OnInit(EventArgs e)
{
PopulateTextBoxes();
base.OnInit(e);
}
protected void PopulateTextBoxes()
{
int quantityRequired = 0;
quantityRequired =GetQuantity();
for (int j = 0; j < quantityRequired; j++)
{
TableRow row = new TableRow();
TableCell cell1 = new TableCell();
TextBox tb = new TextBox();
//tb.ID = j.ToString() +":RowTbx";---> this when uncommented does not fire my tb_textChanged event while left commented the textchanged event is fired. Cant understand why? How is assigning an ID affect event Firing, I need to have the ID to further update my Db.
tb.AutoPostBack = true;
tb.TextChanged += new EventHandler(tb_TextChanged);
cell1.Controls.Add(tb);
row.Cells.Add(cell1);
TableCell cell2 = new TableCell();
CheckBox chBox = new CheckBox();
chBox.CheckedChanged += new EventHandler(chBox_CheckedChanged);
chBox.AutoPostBack = true;
cell2.Controls.Add(chBox);
row.Cells.Add(cell2);
TableCell cell3 = new TableCell();
Image img = new Image();
img.Width = Unit.Pixel(25);
img.Height = Unit.Pixel(25);
img.ImageUrl = "HttpRuntime.AppDomainAppVirtualPath" + "/Images/" +"img.jpeg";
cell3.Controls.Add(img);
row.Cells.Add(cell3);
tbl_Serial.Rows.Add(row);
}
}
private void tb_TextChanged(object sender, EventArgs e)
{
// TODO: Implement this method
//throw new NotImplementedException();
}
protected override void OnInit(事件参数e)
{
populatetextboxs();
碱基.奥尼特(e);
}
受保护的void populatetextboxs()
{
int quantityRequired=0;
quantityRequired=GetQuantity();
对于(int j=0;j这在未注释时不会触发我的tb_textChanged事件,而在左侧注释时会触发textChanged事件。无法理解为什么?分配ID如何影响事件触发,我需要有ID来进一步更新我的数据库。
tb.AutoPostBack=true;
tb.TextChanged+=新事件处理程序(tb_TextChanged);
单元格1.对照组。添加(tb);
row.Cells.Add(cell1);
TableCell cell2=新的TableCell();
复选框chBox=新复选框();
chBox.CheckedChanged+=新事件处理程序(chBox\u CheckedChanged);
chBox.AutoPostBack=true;
cell2.Controls.Add(chBox);
行。单元格。添加(单元格2);
TableCell cell3=新的TableCell();
图像img=新图像();
图像宽度=单位像素(25);
img.高度=单位像素(25);
img.ImageUrl=“HttpRuntime.AppDomainAppVirtualPath”+”/Images/“+”img.jpeg”;
单元格3.控件。添加(img);
行。单元格。添加(单元格3);
tbl_序列行。添加(行);
}
}
私有void tb_TextChanged(对象发送方,事件参数e)
{
//TODO:实现此方法
//抛出新的NotImplementedException();
}
谢谢不要将
:
用于ID
。试试这个
tb.ID = j.ToString() + "_RowTbx";
您正在设置的id不是有效的控件id 参考: 仅字母数字字符和下划线的组合 字符(\)是此属性的有效值。包括空间 或其他无效字符将导致ASP.NET页分析器错误 试试这个:
tb.ID = "RowTbx" + j;
谢谢,这很有帮助。你为我节省了很多时间:)非常感谢!别忘了标出正确的答案。它可以帮助别人。谢谢,它帮助了。你为我节省了很多时间:)非常感谢!