如何使用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方法的选择按钮相同的生成输出?
由于我还不能想出一个优雅的解决方案,我已经使用以下代码修复了它:
e.Row.Attributes["onclick"] = "__doPostBack('" + this.UniqueID + "$" + gvUserList.ID + "', 'Select$" + e.Row.RowIndex + "')";
这是我能想出的最好的。我仍然欢迎其他答案!