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

[DevExpress]GridControl分页的实现 添加两个组件:BindingNavigator和BindingSource代码:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System. 阅读详情

网上很多保持分页的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();
            }
        }
    }
}

这样的话达到这样的效果,比如分页一个页面10个记录,
我们在第一页的时候选择了1,4,6记录,翻页到第二页
在第二页的时候选择了2,3,7记录,然后翻页回第一页
看到checkbox还是选择的是1,4,6记录,翻页到第二页选择2,3,7,每个页面独立保存自己的状态
 
从DDPM到DDIM:深入解读《Denoising Diffusion Implicit Models》 DDIM发表在ICRL2021上,是DDPM重要的改进之一,能显著提高DDPM的样本质量、减少采样时间,并且能显式控制插值,已经被广泛应用到现在的Diffusion Models上。这篇博客和大家一起详细解读一下DDIM,认识这一伟大的模型。......... 阅读详情

相关推荐

DC综合中set_dft_signal的实战配置与优化策略

本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。

weixin_28347369的博客 403

easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中

DataGrid其中与选择,勾选相关 DataGrid属性: singleSelect boolean 如果为true,则只允许选择一行。 false ctrlSelect boolean 在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作。(该属性自1.3.6版开始可用) checkOnSelect boolean 如果为true,当用户点击行的时候该复选框就会被选中...

私人天地 1万+

ESP32 WiFi自平衡小车硬件与PID控制实战

自平衡小车是典型的嵌入式实时反馈控制系统,其核心依赖姿态感知(如MPU6050)、电机驱动(如L298N)与闭环控制算法(如PID)的协同。系统通过IMU采集俯仰角,经互补滤波融合处理,再由PID控制器实时计算PWM输出,驱动直流电机产生恢复力矩;WiFi模块(ESP32内置)则提供远程遥控接口,实现AP模式下的Web指令交互。该架构兼具硬实时性(毫秒级采样与响应)与软实时性(HTTP服务),广泛应用于机器人教学、智能小车开发及边缘控制原型验证。本文围绕ESP32平台,详解传感器接口、驱动电路设计、PID抗

weixin_42509513的博客 391

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

网上很多保持分页的datagird的checkbox选择状态的文章实现的是保存当前页面的chexkbox所选,也就是说第一页选择了第一条记录翻页到第二页后还是选择第一条记录,然后选择了第二条记录,再去看第一页还是第二条记录,保存的只是上次操作的结果,而我们往往希望分开保存所有页面的选择情况,下面是示例代码:前台:@ Page language="c#" Codebehind="Web

652

【Python 实战基础】如何绘制热力图来模拟绘制北京景区热度图

Python如何绘制热力图来模拟绘制北京景区热度图 文件读写 基础语法 字符串处理 文件生成 数据构建

菜鸟实战的博客 3401

航天仿真必看:如何用SOFA库实现高精度GCRS-ITRS坐标转换?避坑指南

本文深入解析了航天仿真中高精度GCRS-ITRS坐标转换的关键技术,重点介绍了SOFA库在天球系与轨道系转换中的权威应用。通过对比传统方法的误差来源,详细阐述了SOFA库的转换算法优势、工程实现步骤及误差控制策略,为航天器轨道仿真提供毫米级精度的解决方案。

7h6j5k4l3的博客 850

datagrid记忆翻页前后的勾选项

定义一个变量存储所选项: var selRows = []; 选择一行数据的时候: onCheck:function(index,row){             if(selRows.length == 0){                 selRows.push(row);             } else {                 var has = false; ...

HouJi1的博客 686

水文预报新手别怕!用Matlab 18小时搞定马斯京根法参数K和x(附完整代码)

本文详细介绍了如何使用Matlab在18小时内快速掌握水文预报中的马斯京根法参数K和x的求解方法。通过完整的代码示例和分步解析,帮助新手从理论到实践快速跨越,解决传统手工试算耗时耗力的问题,提升水文预报的效率和精度。

weixin_42573113的博客 255

miniUI datagrid选中与右侧datagrid联动效果实现

分享一个关于miniUI中选中datagrid中的某行数据,与右侧数据联动的效果: 需求,在查询的结果列表,选中任意一行数据,右侧会加载该条数据的明细数据。 (1)使用鼠标进行行选中,然后触发右侧datagrid的联动 (2)当选中一条记录后,可以通过键盘的上下PgUp和PdDn来实现右侧数据的联动显示,基本效果图如下所示: 下面分别对上面的两种操作的前端实现都会做说明: 针对操作1: //获取...

墨笙弘一 2327

2、MOSFET基本物理效应及其BSIM4模型解析

本文深入探讨了MOSFET的基本物理效应及其在BSIM4模型中的数学表述,涵盖门和沟道的几何结构、温度依赖性、材料模型选项、阈值电压计算、以及其他关键物理效应如LDD电阻、有限电荷厚度、有效迁移率等。同时解析了机械应力、邻近效应及布局依赖效应对MOSFET性能的影响,并通过参数表和建模流程提供了精确建模的指导,旨在帮助读者优化MOSFET器件性能与可靠性。

purple的博客 565

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

通过不断实践,熟悉软件的各项功能和操作技巧,工程师可更好地应对工业自动化控制中的各种挑战,开发出高效、稳定的控制程序。项目的基本组件是构成程序的核心元素,包括:程序块(主程序 OB1、子程序和中断程序)、数据块(给 V 存储器赋初值)、系统块(硬件组态和参数设置)、符号表(用符号代替存储器地址,使程序更易理解)以及状态图表(监视、修改和强制变量状态)。下载程序时,单击工具栏上的 “下载” 按钮,在弹出的下载对话框中选择要下载的块(程序块、数据块、系统块),单击 “下载” 即可。

电工 5573

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

网上很多保持分页的datagird的checkbox选择状态的文章实现的是保存当前页面的chexkbox所选,也就是说第一页选择了第一条记录翻页到第二页后还是选择第一条记录,然后选择了第二条记录,再去看第一页还是第二条记录,保存的只是上次操作的结果,而我们往往希望分开保存所有页面的选择情况,下面是示例代码:前台: @ Page language="c#" Codebehind="WebFo

jelink的专栏 976

STM32F103VCT6+W5500 TCP 服务端通信

STM32F103VCT6 W5500的TCP连接通讯的程序

坚韧与专注 7818

CheckBox在DataGrid上选择复选框

CheckBox在DataGrid上选择教程 »在DataGrid上选择CheckBox本教程将向您介绍如何在DataGrid上放置复选框列。通过复选框,用户可以选择一次选择/取消选择网格行。观看演示要添加复选框列,我们只需添加一个带有复选框属性的列并将其设置为true。代码看起来像这样:&lt;table id = “tt” title = “复选框选择” class = “easyui-dat...

qq_40435659的博客 1637

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

datagrid加checkbox实现分页不丢失选择的记录 (转)

 HTML Tags and JavaScript tutorialvar encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);

wmh4242424cs的专栏 380

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

如何在griddata分页保存每页先前checkbox的选中状态?

网上很多保持分页的datagird的checkbox选择状态的文章实现的是保存当前页面的chexkbox所选,也就是说第一页选择了第一条记录翻页到第二页后还是选择第一条记录,然后选择了第二条记录,再去看第一页还是第二条记录,保存的只是上次操作的结果,而我们往往希望分开保存所有页面的选择情况,下面是示例代码:前台:这样的话达到这样的效果,比如分页一个页面10个记录,我们在第一页的时候选择了1,4

xiaoqiang081387的专栏 1606

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

easyui datagrid checkbox

easyui datagrid 中本身有checkbox列的属性设置,在使用中发现分页的时候这个checkbox的选择很有问题,比如在第二页点了全选,到第三页的时候,竟然也是选择状态,并且还不是所有选择,有一两个没有选择的,于是就手工在数据源中组织出checkbox,然后手工加上选择代码<table id="tt" cellspacing="0" cellpadding="0">

随记 4421

easyUI的datagrid 分页保存选中状态

onLoadSuccess:function(data){ var rows = data.rows; //从编辑页面传过来的指标编码 var indeCodes=$("#indeCodes").val(); var n=indeCodes.split(';').length-1

cwj1103 2733

【EasyUI DataGrid】实现跨页保持多选checkbox状态

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;为了实现对EasyUi DataGrid的批量操作,需要对多行的数据进行选中,经过测试发现一个问题:进行多选的时候,经过翻页,上一页的数据选择状态被清空。然而在实际中这是不符合要求的,我们经过翻页上一页数据的选中状态应该仍然保持选中,而不是被清除。 &amp;nbsp;&amp;nbsp;&amp

wilson_m的博客 4696
上一篇: ASP.NET程序中常用的三十三种代码
下一篇: 方便的使用单击和双击更新DataGrid中的数据的例子
fest
博客等级 码龄21年 3粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值