在ASP.NET跨页多选

本文介绍怎样在ASP.NET中实现多页面选择的问题。其详细思路非常easy:用隐藏的INPUT记住每次选择的项目,在进行数据绑定时。检查保存的值,再在DataGrid中进行选中显示。

以下时完整的代码和样例:

  查看样例

  SelectMultiPages.aspx

<%@ Page EnableViewState="true" CodeBehind="SelectMultiPages.aspx.cs" Language="c#" 

AutoEventWireup="false" Inherits="eMeng.Exam.SelectMultiPages" %> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 

<HTML> 

<HEAD> 

<title>跨页面实现多选</title> 

<META http-equiv="content-type" content="text/html; charset=gb2312"> 

<style> 

* {FONT-SIZE:12PX} 

#Status {text-align:left} 

</style> 

<script language="JAVASCRIPT"> 

function AddRemoveValues(oChk) { 

//在处理这个地方须要注意的是:你保存的值应该具有唯一性。这样才干不会替换错误的项。

if(oChk.checked) 

SelectMultiPage.HdnSelectedValues.value += "," + oChk.value; 

else 

SelectMultiPage.HdnSelectedValues.value = SelectMultiPage.HdnSelectedValues.value.replace("," + oChk.value,""); 



</script> 

</HEAD> 

<BODY> 

<form id="SelectMultiPage" runat="server"> 

<asp:datagrid id="DataGrid1" HorizontalAlign="Center" AutoGenerateColumns="False" Width="600px" 

AllowPaging="True" runat="server"> 

<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle> 

<HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle> 

<PagerStyle HorizontalAlign="Right" Mode="NumericPages" Visible="True"></PagerStyle> 

<Columns> 

<asp:TemplateColumn HeaderText="选择"> 

<ItemTemplate> 

<input type="checkbox" runat="server" id="chkSelect" onclick="AddRemoveValues(this)" 

value='<%#DataBinder.Eval(Container.DataItem,"Title")%>'/> 

</ItemTemplate> 

</asp:TemplateColumn> 

<asp:TemplateColumn HeaderText="文章标题"> 

<ItemTemplate> 

<asp:Literal Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" ID="TitleShow"/> 

</ItemTemplate> 

</asp:TemplateColumn> 

<asp:TemplateColumn HeaderText="公布时间"> 

<ItemTemplate> 

<asp:Literal Text='<%# DataBinder.Eval(Container.DataItem, "CreateDate").ToString() %>' runat="server"/> 

</ItemTemplate> 

</asp:TemplateColumn> 

</Columns> 

</asp:datagrid> 

<div align=center> 

<asp:button id="Button1" runat="server" Text="得到所选的值"></asp:button> 

<div id="Status"> 

<asp:label id="Label1" runat="server"></asp:label> 

</div> 

<INPUT id="HdnSelectedValues" type="hidden" name="HdnSelectedValues" runat="server"> 

</div> 

</form> 

</BODY> 

</HTML>

SelectMultiPages.aspx.cs

using System; 

using System.Collections; 

using System.ComponentModel; 

using System.Data; 

using System.Data.OleDb; 

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 eMeng.Exam 



/// <summary> 

/// SelectMultiPages 的摘要说明。 

/// </summary> 

public class SelectMultiPages : System.Web.UI.Page 



protected System.Web.UI.WebControls.Button Button1; 

protected System.Web.UI.WebControls.Label Label1; 

protected System.Web.UI.HtmlControls.HtmlInputHidden HdnSelectedValues; 

protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e) 



// 在此处放置用户代码以初始化页面 

if(!Page.IsPostBack) 

BindData(); 



private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e) 



DataGrid1.CurrentPageIndex = e.NewPageIndex; 

BindData(); 

}

void BindData() 



OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 

+ HttpContext.Current.Server.MapPath("aspx.mdb")); 

OleDbDataAdapter da = new OleDbDataAdapter("Select Title, CreateDate from Document",cn); 

DataSet ds = new DataSet(); 

da.Fill(ds); 

DataGrid1.DataSource= ds; 

DataGrid1.DataBind(); 

}

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 



//又一次显示所选择的项目 

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 



if(HdnSelectedValues.Value.IndexOf(((Literal)e.Item.Cells[1].FindControl("TitleShow")).Text) >= 0 ) 



HtmlInputCheckBox ChkSelected = (HtmlInputCheckBox)(e.Item.Cells[0].FindControl("ChkSelect")); 

ChkSelected.Checked = true; 







private void Button1_Click(object sender, System.EventArgs e) 



//为了显示的方便进行替换的 

Label1.Text = HdnSelectedValues.Value.Replace(",","<li>"); 

}

#region Web 窗口设计器生成的代码 

override protected void OnInit(EventArgs e) 



// 

// CODEGEN: 该调用是 ASP.NET Web 窗口设计器所必需的。 

// 

InitializeComponent(); 

base.OnInit(e); 

}

/// <summary> 

/// 设计器支持所需的方法 - 不要使用代码编辑器改动 

/// 此方法的内容。 

/// </summary> 

private void InitializeComponent() 



this.DataGrid1.ItemDataBound += 

new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound); 

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



}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

A在SP.NET跨页多选的更多相关文章

  1. Bootstrap table 跨页全选

    此代码是针对于bootstrap table中分页的跨页全选. 以下是整个bootstrap的定义 <script type="text/javascript" src=&q ...

  2. Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能

    业务场景 在使用Element UI的Table组件时,常常面对这样的业务需求: 表格数据的每一项都要提供勾选框,当切换分页时,能够记忆所有页面勾选的数据,以实现批量提交不同页面勾选数据的功能.并且, ...

  3. web跨页弹窗选值

    最近在项目中看到这样一种效果——点击当前网页文本框,然后弹出一个缩小的网页,并在网页里选择或填写数据,然后又返回当前网页,小网页关闭.感觉非常不错,其实在以前网上也看见过,只是当时没有留心.今天抽时间 ...

  4. element ui表格常用功能如:导出 新增 删除 多选 跨页多选 固定表头 多级表头 合并行列 等常见需求

    <template> <div class="table-cooperte"> <el-table :data="tableData&quo ...

  5. Candence下对“跨页连接器(off-page connector)”进行批量重命名的方法

    parts.ports.alias等等均可以在“属性编辑器(Property Editor)”中进行查看编辑,并通过复制到Excel等表格软件来进行批量修改.之后再粘贴回去的方法进行批量编辑.但是“跨 ...

  6. Office 2019 Word表格无法跨页重复标题行

    Office 2019 Word表格无法跨页重复标题行 今天使用Word设置表格枫叶重复标题行,死活无法实现 右键属性设置还是直接点击重复标题行设置,表格整个跳转到下一页去了 然后百度了解决方案是在[ ...

  7. layui table 跨页记忆选择

    layui 表格功能目前默认不支持跨页记忆选择 下面来实现layui table跨页记忆选择实现 基于layui版本 1.4.5 表格跨页通用方法 //表格分页复选框 layui.define(['j ...

  8. 网页打印A4纸-----表格在跨页时自动换页打印的实现 (转)

    在最近所做的一个项目中,需要通过网页来打印不少的表单,但是又不想每个打印页签各占用一个页面,这样就需要生存很多不同的冗余页面,为了减少冗余,所有的表单通过jquery的页签tab来实现的. 一 :基本 ...

  9. 解决SMARTFORMS 中table 控件单行跨页的问题

    在CX项目中,MM模块做了大量的的单据打印的工作,一个问题困扰了我好久,一直不能解决.当物料描述很长时,table控件在单元格中能自动换行,这样就有可能在换页处出现一行记录的一部分打在上一页,一部分记 ...

随机推荐

  1. 定向爬虫之爬一爬各个学校新闻的认识(【1】对Url的认识)

    昨天早上,我习惯性的打开博客园,看一看别人的写的博客.突然想起,自己好像没有写过什么博客,所以就心血来潮,把我现在做得事情写出来, 这也是对我目前的学习的一种总结.望大神指点.... 对于一间学校的新 ...

  2. 命令模式 & 策略模式 & 模板方法

    一.策略模式 策略模式:封装易变化的算法,可互相替换. GoF<设计模式>中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换.该模式使得算法可独立于它们的客户变化. 比如 ...

  3. Script:SQL调优健康检查脚本

    Script:SQL调优健康检查脚本 http://www.askmaclean.com/archives/sql-tuning-health-check-script.html 以下脚本可以用于收集 ...

  4. Atitit。团队建设--管理最佳实践--如何留住关键人才,防止人才外流 ??

    Atitit.团队建设--管理最佳实践--怎样留住核心人才,防止人才流失 ?? 1. 1.人才流失后果 1 1. 1.员工的离职带走商业技术秘密和客户等资源 1 2. 2.影响在职员工的情绪.极大挫伤 ...

  5. cocos2dx tolua传递参数分析

    cocos2dx tolua传递参数分析: tolua_Cocos2d_CCNode_addChild00 == void CCNode::addChild(CCNode *child) tolua_ ...

  6. SQL开发中容易忽视的一些小地方(二)

    原文:SQL开发中容易忽视的一些小地方(二) 目的:继上一篇:SQL开发中容易忽视的一些小地方(一) 总结SQL中的null用法后,本文我将说说表联接查询. 为了说明问题,我创建了两个表,分别是学生信 ...

  7. Android使用代码消除App数据并重新启动设备

    /** * 使用代码消除App数据 * 我们不寻常的清除App数据,中找到相应的App * 然后选择其清除数据.以下给出代码实现. * * 注意事项: * 1 设备须要root * 2 该演示样例中删 ...

  8. React的React Native

    React的React Native React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React ...

  9. ER模型

    一.什么是ER模型 实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器.独立于DBMS的ER图模型.通常将它简称为ER ...

  10. Git Config(转)

    一.Git已经在你的系统中了,你会做一些事情来客户化你的Git环境.   你只需要做这些设置一次:即使你升级了,他们也会绑定到你的环境中.你也可以在任何时刻通过运行命令来重新更改这些设置.      ...