GridView翻页时保持CheckBox选择状态


// 定义翻页bool 1private bool changed=false; // 定义保存选择项主键集合属性
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.gvwResult.Rows.Count; i++)
    
{
           CheckBox cbx 
= (CheckBox)this.gvwResult.Rows[i].FindControl("chkSelect");

           
string id = this.gvwResult.DataKeys[i].Values[0].ToString();
            
if (selecteditems.Contains(id) && !cbx.Checked)
                selecteditems.Remove(id);
            
if (!selecteditems.Contains(id) && cbx.Checked)
                selecteditems.Add(id);
        }

        
this.SelectedItems = selecteditems;
}

// 在 DataBinding事件中执行GetSelectedItem()
protected   void  gvwResult_DataBinding( object  sender, EventArgs e)
    
{
        GetSelectedItem();
    changed
=true;
    }

// 在行绑定时确定CheckBox选中状态
protected   void  gvwResult_RowDataBound( object  sender, GridViewRowEventArgs e)
     
{      
        
if (e.Row.RowIndex > -1 && this.SelectedItems!= null)
         
{           
             CheckBox cbx 
= (CheckBox)e.Row.FindControl("chkSelect");
            
string id = this.gvwResult.DataKeys[e.Row.RowIndex].Values[0].ToString();
             
if (SelectedItems.Contains(id))
                 cbx.Checked 
= true;
             
else
                cbx.Checked 
= false;
        }

    }

// 根据changed确定是否再执行GetSelectedItem(),否则不翻页时选择项获取不到.
protected   void  btnConfirm_Click( object  sender, EventArgs e)
    
{
      
if(!changed)
        GetSelectedItem();
      
foreach (string id in (List<string>)this.SelectedItems)
        
{
           
//...
        }

     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值