GridView实现翻页全选功能

之前也有做过很多对列表信息进行多选的功能,但一般都只涉及到单页勾选。那这此工作需要,自己需要对列表中的信息进行分页全选。下面我就对此进行阐述:

首先我这里用到的列表控件是GridView,

 

关键步骤:

protected void GridView1_DataBinding(object sender, EventArgs e)
    {
        //在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
        CollectSelected();
    }

 

    /// <summary>
    /// 获取或设置选中项的集合
    /// </summary>
    protected ArrayList SelectedItems
    {
        get
        {
            return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
        }
        set
        {
            ViewState["mySelectedItems"] = value;
        }
    }

 

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#D6E4F2'");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
         //这里的处理是为了回显之前选中的情况
        if (e.Row.RowIndex > -1 && this.SelectedItems!=null)
        {
            DataRowView row = e.Row.DataItem as DataRowView;
            CheckBox cb = e.Row.FindControl("CheckedUser") as CheckBox;
            if (this.SelectedItems.Contains(row["uname"].ToString()))
                cb.Checked = true;
            else
                cb.Checked = false;
        }        
    }

 

View Code
 1     /// <summary>
 2     /// 从当前页收集选中项的情况
 3     /// </summary>
 4     protected void CollectSelected()
 5     {
 6         ArrayList selectedItems = null;
 7         if (this.SelectedItems == null)
 8             selectedItems = new ArrayList();
 9         else
10             selectedItems = this.SelectedItems;
11 
12         for (int i = 0; i < this.GridView1.Rows.Count; i++)
13         {
14             string id = this.GridView1.Rows[i].Cells[6].Text.ToString();
15             Label lblUnit = (Label)GridView1.Rows[i].Cells[4].FindControl("lblUsers");
16             CheckBox cb = this.GridView1.Rows[i].FindControl("CheckedUser") as CheckBox;
17             if (selectedItems.Contains(id) && !cb.Checked)
18                 selectedItems.Remove(id);
19             if (!selectedItems.Contains(id) && cb.Checked)
20                 selectedItems.Add(id);
21         }
22         this.SelectedItems = selectedItems;
23     }

 

 

posted @ 2012-09-17 17:11  f_zp  阅读(404)  评论(0编辑  收藏  举报