日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何datagrid分页保持每页先前选择的checkbox的状态?

發布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何datagrid分页保持每页先前选择的checkbox的状态? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉:http://lovecherry.cnblogs.com/archive/2005/10/18/257338.html

網上很多保持分頁的datagird的checkbox選擇狀態的文章實現的是保存當前頁面的chexkbox所選,也就是說第一頁選擇了第一條記錄翻頁到第二頁后還是選擇第一條記錄,然后選擇了第二條記錄,再去看第一頁還是第二條記錄,保存的只是上次操作的結果,而我們往往希望分開保存所有頁面的選擇情況,下面是示例代碼:

前臺:

<%@?Page?language="c#"?Codebehind="WebForm1.aspx.cs"?AutoEventWireup="false"?Inherits="checktest.WebForm1"?%>
<!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的状态?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。