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)
        
{
           
//...
        }

     }
發佈了36 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章