我在创建的 ASP.NET 项目中创建了 Table 的一个子类。该表使用一个类来格式化和创建 TableRows 和 TableCells,我们可以称之为 RowCreator。所以 MyTable 调用 rowCreator.CreateRow() 并返回一个 TableRow 里面有很多好东西。
在这个 TableRow 中有一个 TextBox,它应该在 onblur 事件上触发一个 javascript 方法,它是由 RowCreator 类添加的。
textBox.Attributes.Add("onblur", "javascriptMethod('" + textbox.ClientID + "');");
我还尝试创建了一个 textBox 的子类,它实现了一个添加 onblur 事件的方法:
Attributes.Add("onblur", "javascriptMethod('" + this + "');")
这是行不通的。ID 只是文本框子类的命名空间。
并且 JavaScript 方法非常简单:
function javascriptMethod(boxId) {
alert(boxId);
}
问题是,我猜这是因为尚未将文本框控件添加到控件集合中,因此 boxId 不是正确的客户端 ID。它与服务器端 ID 相同。有没有一种方法可以获取正确的 ID,而无需先在页面上使用 Controls.Add 添加行?还有其他建议吗?
我什至这样做的原因是每当它被改变时从一个javascript函数中读取文本框内容。也许有更好的方法来做到这一点?