我有一个看起来像这个
的网格视图<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 :(得分: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("GridView1$ctl05$Button1", "", false, "", "Default.aspx?TAB=", 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>