我有一个Gridview,其中我有Update行的功能。单击更新行时,将在用户可以更新特定行的记录的行中生成文本框。但是,如果用户选择gridview(page = 1)的第2行进行更新,然后单击第4页而不保存。现在显示第4页,第4行启用第2行更新。此外,如果用户选择gridview的第2行(page = 1),则单击第4页。现在显示第4页,第2行突出显示,因此对用户来说,看起来他们已经选择了第4页的第2行,我需要让selectrow与分页一起移动,以免混淆用户。 以下是我的Gridview定义:
<asp:GridView ID="grdDisountList" runat="server" PersistedSelection="false" CellPadding="4" ForeColor="#333333" GridLines="None"
AutoGenerateColumns="false" Width="100%" OnRowEditing="EditRow" OnRowCancelingEdit="CancelEditRow"
OnRowUpdating="UpdateRow" DataKeyNames="Discount_Id" AllowPaging="true" OnRowDataBound="grdDisountList_RowDataBound"
PageSize="15" OnPageIndexChanging="OnPageIndexChanging" OnRowCommand="SelectRow" OnSelectedIndexChanged="grdDisountList_SelectedIndexChanged">
任何想法?
答案 0 :(得分:1)
所选行仅适用于GridView中的可见项。因此,当您更改页面时,所选项目仍将是第二个选定行,即使它是完全不同的项目。
最佳选择是在OnPageIndexChanging
事件中将所选行设置为-1。
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.SelectedIndex = -1;
GridView1.EditIndex = -1;
}
如果您真的想保留SelectedIndex,请将其与PageIndex一起保存在Session或ViewState中,并根据这些值重新选择正确的。