datagrid加checkbox实现分页不丢失选择的记录 (转)
namespace checkboc_page
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
show();
}
}
private void show()
{
string conn = ConfigurationSettings.AppSettings.Get("Connstring");
DataSet ds = new DataSet();
using( SqlConnection con = new SqlConnection(conn))
{
con.Open();
SqlCommand comm = new SqlCommand();
SqlDataAdapter da =new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = "select * from Orders";
da.SelectCommand.CommandType = CommandType.Text;
da.Fill(ds);
}
this.DataGrid1.DataSource = ds.Tables[0];
this.DataGrid1.DataBind();
if(Session["userlist"]!=null)
{
Hashtable ht =(Hashtable) Session["userlist"];
if(ht!=null)
{
for(int i = 0 ;i<DataGrid1.Items.Count ;i++)
{
if (ht.ContainsKey(DataGrid1.Items[i].Cells[0].Text.ToString().Trim()))
(DataGrid1.Items[i].Cells[2].FindControl("CheckBox1") as CheckBox).Checked = true;
}
}
}
}
private void check()
{
Hashtable ht = new Hashtable();
if(Session["userlist"]!=null)
{
ht =(Hashtable) Session["userlist"];
if(ht!=null)
{
for(int i = 0 ;i<DataGrid1.Items.Count ;i++)
{
if ( (DataGrid1.Items[i].Cells[2].FindControl("CheckBox1") as CheckBox).Checked)
{
if (! ht.ContainsKey(DataGrid1.Items[i].Cells[0].Text.ToString().Trim()))
{
ht.Add(DataGrid1.Items[i].Cells[0].Text.ToString().Trim(),DataGrid1.Items[i].Cells[1].Text.ToString().Trim());
}
}
else
{
if ( ht.ContainsKey(DataGrid1.Items[i].Cells[0].Text.ToString().Trim()))
{
ht.Remove(DataGrid1.Items[i].Cells[0].Text.ToString().Trim());
}
}
}
}
}
else
{
for(int i = 0 ;i<DataGrid1.Items.Count ;i++)
{
if ( (DataGrid1.Items[i].Cells[2].FindControl("CheckBox1") as CheckBox).Checked)
{
ht.Add(DataGrid1.Items[i].Cells[0].Text.ToString().Trim(),DataGrid1.Items[i].Cells[1].Text.ToString().Trim());
}
}
}
Session["userlist"] = ht;
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
check();
DataGrid1.CurrentPageIndex = e.NewPageIndex;
show();
}
private void Button1_Click(object sender, System.EventArgs e)
{
check();
Hashtable ht = (Hashtable)Session["userlist"];
foreach (DictionaryEntry objDE in ht)
{
Response.Write(objDE.Value.ToString());
}
}
}
}