//定义翻页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)
{
//...
}
}