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

时间:2014-05-22 07:25:31

标签: c# asp.net .net gridview

我在gridview中遇到问题,根据要求我在gridview中设置每页的记录数= 4。我必须针对每个投诉选择Checkbox但问题是当我在gridview中进入下一个pge时,例如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>

2 个答案:

答案 0 :(得分:1)

请检查以上链接。您的问题已经清楚解释 here 。我认为这可能会有所帮助

答案 1 :(得分:0)

根据评论......

如果您不通过处理复选框的OnCheckChanged事件来更新基础数据库,那么它将始终只读取相同的数据。

How to add event for Checkbox click in Asp.net Gridview Column开始,我提取所需信息,并尝试修改以适合您的初始问题。

<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;

}