2013-02-13 68 views
1

我阅读所有相关的帖子,但仍然无法理解目前面临的概率。Oninit我创建表格与文本框如下,当我分配一个ID文本框textchanged事件不会触发,但是当我不分配ID时它会触发。无法理解为什么。请帮助。动态创建的文本框的ontextchanged事件不会触发时分配ID

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(); 
} 

谢谢

+0

不要忘记标记正确的答案。它可以帮助其他人。 – 2013-02-13 06:01:38

回答

2

您设置的ID不是有效的控件ID。

参见:字母数字字符和下划线 字符(_)Control.ID

只有组合对于此属性的有效值。包括空格 或其他无效字符将导致ASP.NET页面分析器错误。

试试这个:

tb.ID = "RowTbx" + j; 
+0

谢谢,它有帮助。你为我节省了很多时间:)谢谢! – Jaya 2013-02-13 17:33:58

1

不使用:ID。试试这个代替

tb.ID = j.ToString() + "_RowTbx"; 
+0

谢谢,它有帮助。你为我节省了很多时间:)谢谢! – Jaya 2013-02-13 04:59:58

相关问题