GridView分页中所选行的问题

时间:2017-07-05 08:38:30

标签: c# asp.net gridview

我有一个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">

任何想法?

1 个答案:

答案 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中,并根据这些值重新选择正确的。