我有一个自定义WebControl类,它继承自WebControl和INamingContainer。这个类里面是一个gridview,我希望它有可点击的行。
我暂时将网格视图AutoGenerateSelectButton
设置为True
,但最终我想用行onclick事件替换它,该事件将回发到服务器。
在gridviews RowCreated
事件中,我有以下代码将我想要的onclick事件添加到每一行:
e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(this.gvUserList, "Select$" + e.Row.RowIndex);
不幸的是,由于我的类继承自INamingContainer,因此无法正常工作并为select按钮生成略有不同的输出。
选择按钮(可以工作)生成的输出是:
onclick="__doPostBack('UserData$gvUserList','Select$2');"
从ClientScript.GetPostBackClientHyperlink方法生成的代码是这样的:
onclick="__doPostBack('gvUserList','Select$2');"
请注意,选择按钮的javascript在网格视图名称前面加上' UserData $' (由于INamingContainer
接口而从页面本身提供给我的控件的ID),而回发客户端超链接则没有。
如何使用GetPostBackClientHyperlink方法实现与select按钮相同的生成输出?
答案 0 :(得分:0)
由于我无法为此提出一个优雅的解决方案,我使用以下代码修复了它:
override func perform() {
var svc = self.sourceViewController as! UIViewController
var dvc = self.destinationViewController as! UIViewController
svc.navigationController!.pushViewController(dvc, animated: true)
}
这是我能想到的最好的。我仍然欢迎其他答案!