如何datagrid分页保持每页先前选择的checkbox的状态?
生活随笔
收集整理的這篇文章主要介紹了
如何datagrid分页保持每页先前选择的checkbox的状态?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉:http://lovecherry.cnblogs.com/archive/2005/10/18/257338.html
網上很多保持分頁的datagird的checkbox選擇狀態的文章實現的是保存當前頁面的chexkbox所選,也就是說第一頁選擇了第一條記錄翻頁到第二頁后還是選擇第一條記錄,然后選擇了第二條記錄,再去看第一頁還是第二條記錄,保存的只是上次操作的結果,而我們往往希望分開保存所有頁面的選擇情況,下面是示例代碼:
前臺:
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
<HTML>
????<HEAD>
????????<title>WebForm1</title>
????????<meta?name="GENERATOR"?Content="Microsoft?Visual?Studio?.NET?7.1">
????????<meta?name="CODE_LANGUAGE"?Content="C#">
????????<meta?name="vs_defaultClientScript"?content="JavaScript">
????????<meta?name="vs_targetSchema"?content="http://schemas.microsoft.com/intellisense/ie5">
????????<LINK?href="css.css"?type="text/css"?rel="stylesheet">
????</HEAD>
????<body>
????????<form?id="Form1"?method="post"?runat="server">
????????????<asp:datagrid?id="DataGrid1"?runat="server"?AutoGenerateColumns="False"?CellSpacing="1"?BorderWidth="0px"
????????????????CellPadding="5"?CssClass="border"?AllowPaging="True"?PageSize="10">
????????????????<ItemStyle?CssClass="item"></ItemStyle>
????????????????<HeaderStyle?CssClass="header"></HeaderStyle>
????????????????<Columns>
????????????????????<asp:TemplateColumn>
????????????????????????<ItemTemplate>
????????????????????????????<asp:CheckBox?ID="chk"?Runat="server"></asp:CheckBox>
????????????????????????</ItemTemplate>
????????????????????</asp:TemplateColumn>
????????????????????<asp:BoundColumn?DataField="CustomerID"?HeaderText="CustomerID"></asp:BoundColumn>
????????????????????<asp:BoundColumn?DataField="CompanyName"?HeaderText="CompanyName"></asp:BoundColumn>
????????????????????<asp:BoundColumn?DataField="ContactTitle"?HeaderText="ContactTitle"></asp:BoundColumn>
????????????????</Columns>
????????????????<PagerStyle?CssClass="header"?Mode="NumericPages"></PagerStyle>
????????????</asp:datagrid>
????????????<asp:Button?id="Button1"?runat="server"?Text="清空記錄"></asp:Button>
????????</form>
????</body>
</HTML>
后臺:
using?System;
using?System.Collections;
using?System.ComponentModel;
using?System.Data;
using?System.Data.SqlClient;
using?System.Drawing;
using?System.Web;
using?System.Web.SessionState;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.HtmlControls;
namespace?checktest
{
????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(!IsPostBack)
????????????{
????????????????SetBind();????????????????
????????????}
????????}
????????
????????private?void?SetBind()
????????{
????????????SqlConnection?conn=new?SqlConnection("server=(local);uid=sa;pwd=sa
;database=Northwind");
????????????SqlDataAdapter?da=new?SqlDataAdapter("select?*?from?Customers",conn);
????????????DataSet?ds=new?DataSet();
????????????da.Fill(ds,"table1");
????????????this.DataGrid1.DataSource=ds.Tables["table1"];
????????????this.DataGrid1.DataBind();????????????
????????}
????????#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.DataGrid1.ItemDataBound?+=?new?System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
????????????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)
????????{
????????????string?data="";
????????????foreach(DataGridItem?dgi?in?this.DataGrid1.Items)
????????????{
????????????????CheckBox?cb=(CheckBox)dgi.FindControl("chk");
????????????????if(cb.Checked)
????????????????????data+="1";
????????????????else
????????????????????data+="0";
????????????}
????????????if(ViewState["pagedata"]!=null)
????????????{
????????????????Hashtable?ht=(Hashtable)ViewState["pagedata"];
????????????????if(ht.Contains(this.DataGrid1.CurrentPageIndex))????????????????
????????????????????ht[this.DataGrid1.CurrentPageIndex]=data;
????????????????else
????????????????????ht.Add(this.DataGrid1.CurrentPageIndex,data);
????????????????ViewState["pagedata"]=ht;
????????????}
????????????else
????????????{
????????????????Hashtable?ht=new?Hashtable();
????????????????ht.Add(this.DataGrid1.CurrentPageIndex,data);
????????????????ViewState["pagedata"]=ht;
????????????}
????????????this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
????????????SetBind();
????????}
????????private?void?DataGrid1_ItemDataBound(object?sender,?System.Web.UI.WebControls.DataGridItemEventArgs?e)
????????{
????????????if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
????????????{
????????????????if(ViewState["pagedata"]!=null)
????????????????{
????????????????????Hashtable?ht=(Hashtable)ViewState["pagedata"];
????????????????????if(ht.Contains(this.DataGrid1.CurrentPageIndex))
????????????????????{
????????????????????????CheckBox?cb=(CheckBox)e.Item.FindControl("chk");
????????????????????????cb.Checked=ht[this.DataGrid1.CurrentPageIndex].ToString()[e.Item.ItemIndex].ToString()=="1";
????????????????????}
????????????????}
????????????}
????????}
????????private?void?Button1_Click(object?sender,?System.EventArgs?e)
????????{
????????????if(ViewState["pagedata"]!=null)
????????????{
????????????????Hashtable?ht=new?Hashtable();
????????????????ViewState["pagedata"]=ht;
????????????????SetBind();
????????????}
????????}
????}
}
轉載于:https://www.cnblogs.com/Dragon-China/archive/2007/02/28/659080.html
總結
以上是生活随笔為你收集整理的如何datagrid分页保持每页先前选择的checkbox的状态?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学最后一个学期了,感觉没对头。。。
- 下一篇: 元宵之思