如何使用ClientScript.在INamingContainer中获取postbackclientyperlink

本文关键字:获取 postbackclientyperlink INamingContainer 何使用 ClientScript | 更新日期: 2023-09-27 18:06:33

我有一个自定义的WebControl类继承自WebControl和INamingContainer。在这个类中有一个gridview,我希望它有可点击的行。

我暂时将gridviews AutoGenerateSelectButton设置为True,但最终我想用一个行onclick事件来取代它,该事件返回到服务器。

在gridviews RowCreated事件中,我有以下代码将我所需的onclick事件添加到每一行:

e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(this.gvUserList, "Select$" + e.Row.RowIndex);

不幸的是,这不起作用,并且由于我的类继承了INamingContainer而生成了一个略微不同的选择按钮输出。

选择按钮生成的输出(可以工作)是:

onclick="__doPostBack('UserData$gvUserList','Select$2');"

而从ClientScript。GetPostBackClientHyperlink方法如下:

onclick="__doPostBack('gvUserList','Select$2');"

请注意,由于INamingContainer接口,选择按钮的javascript使用'UserData$'(从页面本身给我的控件的ID)前缀gridviews名称,而回发客户端超链接没有。

如何实现与GetPostBackClientHyperlink方法的选择按钮相同的生成输出?

如何使用ClientScript.在INamingContainer中获取postbackclientyperlink

由于我还不能想出一个优雅的解决方案,我已经使用以下代码修复了它:

e.Row.Attributes["onclick"] = "__doPostBack('" + this.UniqueID + "$" + gvUserList.ID + "', 'Select$" + e.Row.RowIndex + "')";

这是我能想出的最好的。我仍然欢迎其他答案!