如何使用自定义标头模板

时间:2017-04-28 05:34:33

标签: asp.net aspxgridview

我的问题与this类似,但答案对我不起作用,因为链接按钮的行为与正常的排序标题不同。

我们的网站使用Server.Transfer隐藏唯一网址下的不同网页访问权限。单击asp:LinkButton将显示首页,而不仅仅是排序网格视图。

查看客户端页面代码时,我发现正常列标题的工具提示看起来像

javascript:__doPostBack("(grid view control id)","Sort$(field name)");

并且在使用LinkBut​​ton的自定义标题模板的列上,它是

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
    "(link button control id)", "", true, "", "", false,true);

我认为不同之处在于原因。

如何使它们表现相同?

更新

我注意到,对于asp:Button而不是链接按钮,javascript点击事件会调用

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(
    "(button control id)", "", true, "", "", false, false);

它没有通往头版。

所以看起来我只需要设置,以便链接按钮不会进行客户端提交。但是最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

使用以下技巧,我实现了这一点。由于它是一种黑客攻击,我仍然愿意看到更好的解决方法。

<asp:LinkButton href="javascript:void(0);" 
    OnClientClick="javascript:__doPostBack(this.id.replace(/_/g,'$'),'');" ...

会阻止提交,因此不会切换到首页。它首先设置href属性,使其不会导致任何位置,然后在OnClientClick中触发LinkButton的回调事件。

它解决了我的问题,但它取决于ASP.NET生成ID和事件目标标识符的实现细节。有没有更好的解决方案?