【问题标题】:How do I get the correct ClientID for my ASP.NET TextBox?如何为我的 ASP.NET 文本框获取正确的 ClientID?
【发布时间】:2009-01-19 10:09:53
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以将 javascript 调用更改为:

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

    然后你可以在你的javascript方法中访问文本框:

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

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

    【讨论】:

    • 一个简单而优雅的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-01-09
    • 2014-04-28
    • 1970-01-01
    • 2012-02-12
    • 2011-03-03
    • 2011-11-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多