2017-04-06 78 views
0

我有一個大致是這樣的如何查詢參數添加到dopostback

<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"; 
    } 
} 

問題

我如何添加自定義參數,這回發。

+0

抓住當前的URL並在最後追加你想要的。重定向到新的字符串? –

回答

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這樣的事情。因爲你加了PostBackUrl

<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功能的按鈕。該函數包含將用於PostBack的url。我們現在要做的就是通過在jQuery中添加自定義屬性來更改網址。

<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> 
+0

有無論如何使行本身就像按鈕? –

+1

是的,只需將onclick事件添加到TR:'$(this).closest('tr')。attr(「onclick」,$(this).attr(「onclick」)。replace(「?TAB =」 ,「?TAB =」+ item));'未經測試,但您可能需要使用'href'而不是'onclick'切換到linkbutton – VDWWD