代码之家  ›  专栏  ›  技术社区  ›  Peter Evjan

如何为我的ASP获取正确的ClientID。NET文本框?

  •  2
  • Peter Evjan  · 技术社区  · 17 年前

    我在ASP中创建了Table的一个子类。NET项目创建。该表使用一个类来格式化和创建TableRows和TableCells,我们可以称之为RowCreator。所以MyTable调用rowCreator。CreateRow(),并返回一个包含许多好东西的TableRow。

    在这个TableRow中,有一个TextBox,它应该在RowCreator类添加的onblur事件上触发一个javascript方法。

    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。先在页面上添加?还有其他建议吗?

    我之所以这样做,是为了在javascript函数发生更改时读取文本框内容。也许有更好的办法?

    1 回复  |  直到 17 年前
        1
  •  7
  •   M4N    17 年前

    您可以将javascript调用更改为:

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

    然后,您可以在javascript方法中访问文本框:

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

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

    推荐文章