在网格视图分页期间丢失的复选框的选择

本文关键字:复选框 选择 网格 视图 分页 | 更新日期: 2023-09-27 18:04:45

我在gridview中有问题,根据要求,我在gridview中设置了每页记录数= 4。我必须针对每个投诉选择复选框,但问题是,当我在网格视图中到达下一页时,例如从1到2,然后当我回到第1页时,它不会在复选框中显示TICK。它不记得我的选择当我浏览和返回页面。

<asp:GridView ID="GridViewSmsComplaints" AllowPaging="True" PageSize="4" runat="server" AutoGenerateColumns="False" CssClass="mGrid" BorderColor="#333333"  Width="550px" OnPageIndexChanging="GridViewSmsComplaints_PageIndexChanging" >
               <Columns>
                <asp:BoundField HeaderText="ID" DataField="ID" /> 
                <asp:BoundField HeaderText="Recieving Date" DataField="RecievingDate" />  
                <%--<asp:BoundField HeaderText="ToMobileNo" DataField="ToMobileNo" />  --%>
                <asp:BoundField HeaderText="FromMobileNo" DataField="FromMobileNo" /> 
                <asp:BoundField HeaderText="Message" DataField="Message" >   
                   <ItemStyle Wrap="True" />
                   </asp:BoundField>
                <asp:TemplateField HeaderText="IsComplaint">
                 <ItemTemplate>
                  <asp:CheckBox ID="ckboxIsComplaint"  runat="server" Checked='<%# Convert.ToBoolean(Eval("IsComplaint").ToString()) %>' />
                 </ItemTemplate>
                </asp:TemplateField>
               </Columns>
            </asp:GridView>

在网格视图分页期间丢失的复选框的选择

请查看以上链接。这里你的问题已经清楚地解释了这里。我想这可能会有帮助

根据注释…

如果您不通过处理复选框的OnCheckChanged事件来更新底层数据库,那么它将一直读取相同的数据。

从如何在Asp.net Gridview列中添加复选框单击事件,我已经提取了所需的信息,并试图修改以适应您的初始问题。

<asp:TemplateField HeaderText="IsComplaint">
   <ItemTemplate>
      <asp:CheckBox ID="ckboxIsComplaint"  runat="server" Checked='<%# Convert.ToBoolean(Eval("IsComplaint").ToString()) %>' OnCheckedChanged="chk_CheckedChanged" AutoPostBack="true/>
   </ItemTemplate>
</asp:TemplateField>

在aspx.cs页面添加复选框更改事件

protected void chk_CheckedChanged(object sender, EventArgs e)
{
    GridViewRow row = ((GridViewRow)((CheckBox)sender).NamingContainer);
    <your data source>.Rows[row.DataItemIndex]["B"] = ((CheckBox)GridViewSmsComplaints.Rows[row.RowIndex].FindControl("ckboxIsComplaint")).Checked;

}