如何将查询参数添加到dopostback

时间:2017-04-06 15:25:40

标签: c# asp.net gridview

我有一个看起来像这个

的网格视图
<asp:GridView ID="MyGridView"
  OnSelectedIndexChanged="OtherAddressGrid_SelectedIndexChanged"
  OnRowDataBound="OnRowDataBoundOther"
     <Columns></Columns>
</asp:GridView>

OnSelectedIndexChanged我要更改回发网址以添加 &TAB=something ,以便我可以使用Request.QueryString["TAB"]将页面更改为所选标签。为此,我将onclick设置为OnRowDataBoundOther中的回发。这就是我到目前为止所拥有的

protected void OnRowDataBoundOther(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(MyGridView, "Select$" + e.Row.RowIndex);
        e.Row.Attributes["style"] = "cursor:pointer";
    }
}

问题

如何为此回发添加自定义参数。

1 个答案:

答案 0 :(得分:1)

您可以将自己的select按钮添加到触发OnSelectedIndexChanged的Gridview中。您只需向其中添加CommandName="select"即可使用。您还需要向按钮添加PostBackUrl以及保存值为TAB的自定义属性(在此代码段中为行索引)

<asp:Button ID="Button1" runat="server" Text="Select" CommandName="select"
    data-item='<%# Container.DataItemIndex %>' PostBackUrl="~/Default.aspx?TAB=" />

现在,你有了一个在HTML中看起来像这样的按钮。

<input type="submit" name="GridView1$ctl05$Button1" value="Button"
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;GridView1$ctl05$Button1&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Default.aspx?TAB=&quot;, false, false))"
    id="mainContentPane_GridView1_Button1_3" data-item="3" />

正如您所看到的,aspnet为该按钮添加了一个onclick函数,因为您添加了PostBackUrl。该函数包含将用于PostBack的url。我们现在要做的就是通过使用jQuery添加自定义属性来更改该URL。

<script type="text/javascript">
    $(document).ready(function () {
        $('#<%=GridView1.ClientID %> input[type=submit]').each(function () {
            var item = $(this).attr('data-item');
            $(this).attr("onclick", $(this).attr("onclick").replace("?TAB=", "?TAB=" + item));
        });
    });
</script>