//定義翻頁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)
{
//...
}
}