HEEN
HEEN

Reputation: 4721

Maintain ViewState of Checkbox checked on paging in asp.net

I have a Gridview with some data. In that I have 5 rows of paging. Whenever I check on checkbox in first page and go to second page and again I come to first page. The checkbox check value gets disappear.

The value of checked is not retained. How to get it maintain the viewstate of checkbox. Please suggest

CODE:

<asp:GridView ID="grdDisplayCMMData" runat="server" AutoGenerateColumns="false" Width="100%" ShowHeaderWhenEmpty="true" CssClass="heavyTable table" EmptyDataText="No records to display"
            AllowPaging="true" PageSize="2" OnPageIndexChanging="grdDisplayCMMData_PageIndexChanging">
            <Columns>                    
                <asp:TemplateField HeaderText="ID" Visible="false">
                    <ItemTemplate>
                        <asp:Label ID="lblID_CMM" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="SAP ID">
                    <ItemTemplate>
                        <asp:Label ID="lblSAP_ID_CMM" runat="server" Text='<%#Eval("SAP_ID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="ID OD CHANGE">
                    <ItemTemplate>
                        <asp:Label ID="lblID_OD_COUNTCHANGE_CMM" runat="server" Text='<%#Eval("ID_OD_COUNTCHANGE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="ID OD CHANGE DATE">
                    <ItemTemplate>
                        <asp:Label ID="lblID_OD_CHANGEDDATE_CMM" runat="server" Text='<%#Eval("ID_OD_CHANGEDDATE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="RRH COUNT CHANGE">
                    <ItemTemplate>
                        <asp:Label ID="lblRRH_COUNTCHANGE_CMM" runat="server" Text='<%#Eval("RRH_COUNTCHANGE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="RRH COUNT CHANGE DATE">
                    <ItemTemplate>
                        <asp:Label ID="lblRRH_CHANGEDDATE_CMM" runat="server" Text='<%#Eval("RRH_CHANGEDDATE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="TENANCY COUNT CHANGE">
                    <ItemTemplate>
                        <asp:Label ID="lblTENANCY_COUNTCHANGE_CMM" runat="server" Text='<%#Eval("TENANCY_COUNTCHANGE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="TENANCY COUNT CHANGE DATE">
                    <ItemTemplate>
                        <asp:Label ID="lblTENANCY_CHANGEDDATE_CMM" runat="server" Text='<%#Eval("TENANCY_CHANGEDDATE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="STATUS">
                    <ItemTemplate>
                        <asp:Label ID="lblSTATUS_CMM" runat="server" Text='<%#Eval("STATUS") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="CREATED BY" Visible="false">
                    <ItemTemplate>
                        <asp:Label ID="lblCREATEDBY_CMM" runat="server" Text='<%#Eval("CREATED_BY") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Approve/Reject">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkApprRejCMM" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>                
        </asp:GridView>

SERVER CODE

protected void grdDisplayCMMData_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            BindCMMData();
            grdDisplayCMMData.PageIndex = e.NewPageIndex;
            grdDisplayCMMData.DataBind();               
        }
        catch (Exception ex)
        {
            string strErrorMsg = ex.Message.ToString() + " " + "StackTrace :" + ex.StackTrace.ToString();
            CommonDB.WriteLog("ERROR:" + strErrorMsg, ConfigurationManager.AppSettings["IPCOLO_LOG"].ToString());
        }
    }

Let me know if anything else is required

Upvotes: 0

Views: 848

Answers (2)

cdev
cdev

Reputation: 5351

Microsoft provided example here.

check list is stored in view state as List.

Upvotes: 1

Alen Genzić
Alen Genzić

Reputation: 1418

To transfer data between pages you cannot use viewstate.

The options of transferring data between pages are Session storage, transferring via query string or storing the needed value into some kind of database.

Example for sessions storage at the most basic level:

On first page:

Session["CheckboxValue"] = chkSomeCheckbox.Checked;

On the second page:

bool isCheckboxChecked = Convert.ToBoolean(Session["CheckboxValue"])

Upvotes: 0

Related Questions