GridView CheckBox 翻页不保存状态

在GridView中添加模板列 模板列里添加CheckBox后,GridView翻页会把其他页选择项清除掉,是因为没有保存状态。想了想大概思路是这样的 用一个数组类的东西保存所选择的项。这里用到了集合。

下面的是在网上找到的 转下

 

using System.Collections.Generic;

protected string sentence = "";
protected int result = 0;
protected Connection sqlCon = null;
protected bool changed = false;

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnOK_Click(object sender, EventArgs e)
    {

        if (!changed)
        {
            GetSelectedItem();
        }
            foreach (string id in (List<string>)this.SelectedItems)
            {

           }
     
    }

    protected List<string> SelectedItems
    {
        get { return ViewState["selecteditems"] != null ? (List<string>)ViewState["selecteditems"] : null; }
        set { ViewState["selecteditems"] = value; }
    }

    private void GetSelectedItem()
    {
        List<string> selecteditems = null;
        if (this.SelectedItems == null)
        {
            selecteditems = new List<string>();
        }
        else
        {
            selecteditems = this.SelectedItems;
        }
        //获取选择的记录
        for (int i = 0; i < this.gdvNews.Rows.Count; i++)
        {
            CheckBox cbx = (CheckBox)this.gdvNews.Rows[i].FindControl("ckbSelect");
            string id = this.gdvNews.Rows[i].Cells[1].Text;
            if (selecteditems.Contains(id) && !cbx.Checked)
                selecteditems.Remove(id);
            if (!selecteditems.Contains(id) && cbx.Checked)
                selecteditems.Add(id);
        }
        this.SelectedItems = selecteditems;
    }

    protected void gdvNews_DataBinding(object sender, EventArgs e)
    {
        GetSelectedItem();
        changed = true;
    }
    protected void gdvNews_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex > -1 && this.SelectedItems != null)
        {
            CheckBox cbx = (CheckBox)e.Row.FindControl("ckbSelect");
            string id = this.gdvNews.DataKeys[e.Row.RowIndex].Values[0].ToString();
            if (SelectedItems.Contains(id))
                cbx.Checked = true;
            else
                cbx.Checked = false;
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值