我有一个继承自 WebControl 和 INamingContainer 的自定义 WebControl 类。在这个类里面是一个gridview,我想要有可点击的行。
我暂时将gridviewsAutoGenerateSelectButton
设置True
为,但最终我想用一个发回服务器的行onclick事件替换它。
在 gridviewsRowCreated
事件中,我有以下代码将我想要的 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');"
请注意,由于界面原因,选择按钮的 javascript 以“UserData$”(从页面本身给我的控件的 ID)作为 gridviews 名称的前缀INamingContainer
,而回发客户端超链接则没有。
如何使用 GetPostBackClientHyperlink 方法实现与选择按钮相同的生成输出?