如何在INamingContainer中使用ClientScript.getpostbackclienthyperlink

时间:2015-08-06 07:45:59

标签: c# asp.net postback web-controls inamingcontainer

我有一个自定义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按钮相同的生成输出?

1 个答案:

答案 0 :(得分:0)

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

override func perform() {
        var svc = self.sourceViewController as! UIViewController
        var dvc = self.destinationViewController as! UIViewController

        svc.navigationController!.pushViewController(dvc, animated: true)
    }

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