0

我有一个继承自 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 方法实现与选择按钮相同的生成输出?

4

1 回答 1

0

由于我无法为此提出一个优雅的解决方案,因此我使用以下代码对其进行了修复:

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

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

于 2015-08-06T12:22:05.063 回答