我正在使用多页面gridview来显示大量数据。这是gridview的代码。
<asp:GridView ID="unverifiedlist" runat="server" AutoGenerateColumns="false" AllowSorting="true" AllowPaging="true" OnRowDataBound="unverifiedlist_RowDataBound" style="font-size:12px" >
<Columns><asp:BoundField HeaderText="Surname" DataField="Surname" ReadOnly="true"/></Columns>
<Columns><asp:BoundField HeaderText="Firstname" DataField="Givenname" ReadOnly="true"/></Columns>
......
<Columns><asp:TemplateField HeaderText="Options" >
<ItemTemplate>
<asp:DropDownList ID="options" runat="server" AutoPostBack="true" OnSelectedIndexChanged="options_SelectedIndexChanged">
<asp:ListItem></asp:ListItem>
<asp:ListItem Value="1">Verified</asp:ListItem>
<asp:ListItem Value="2">Rejected</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Reason">
<ItemTemplate>
<asp:TextBox ID="reason" runat="server" OnTextChanged ="reason_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Visible="false"/>
</asp:GridView>
<asp:DropDownList ID="PageSelect" AutoPostBack="true" runat="server" OnSelectedIndexChanged="PageSelect_SelectedIndexChanged"></asp:DropDownList>
有一个名为&#34;选项的列#34;其中包含一个下拉列表,每次更改所选索引以保存已编辑的行时,它都会回发。我试图避免这种频繁的回发。所以我想如果我可以在用户转到下一页之前保存整个页面。 问题是&#34; PageSelect&#34; dropdownlist的回发将首先触发页面重新加载,然后选择onselectedindexchanged事件,此时,gridview已经转到下一页面。那么有人可以给我一些建议吗?
答案 0 :(得分:0)
您可以将网格视图的EnableSortingAndPagingCallBacks属性设置为true,但如果您在gridview中使用模板字段,则无法工作,为了维护页面状态,您必须在会话中保留当前页面的值,在页面加载时,您可以检查会话..
答案 1 :(得分:0)
我最后使用了gridview本身的分页导航控件而不是我的下拉列表。然后我可以使用pageindexchanging事件将当前页面保存到会话中,然后再转到下一页