如何为ASP.NET TextBox获取正确的ClientID?

时间:2009-01-19 10:09:54

标签: c# .net asp.net javascript asp.net-3.5

我在我创建的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函数中读取文本框内容。也许有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:7)

您可以将javascript调用更改为:

textBox.Attributes.Add("onblur", "javascriptMethod(this);");

然后您可以使用javascript方法访问文本框:

function javascriptMethod(textbox) { alert(textbox.id); }

这样您就不需要使用文本框控件的ClientID。