在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. FPGA合成编码

    1 决策树 于FPGA推断使用if else报表及case达到. a) if else 是有特权的,类似于优先编码(当两个条件同一时候成立,仅推断条件靠前的成立),所以当有特权条件时应该採用if el ...

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

    原文:SQL开发中容易忽视的一些小地方(四) 本篇我想针对网上一些对于非聚集索引使用场合的某些说法进行一些更正. 下面引用下MSDN对于非聚集索引结构的描述. 非聚集索引结构: 1:非聚集索引与聚集索 ...

  3. 记一次tomcat故障排查(转)

    1~1024之间的端口号是保留端口,通常是为特定目的预留的.虽然你的问题不是由于保留端口引起的,但是仍然建议你不要随意使用保留端口作为自定义服务的端口,如果你能早早遵循这一规则压根就不会遇到这个问题. ...

  4. bzoj 2437 [Noi2011]兔子和鸡蛋 [二分图匹配]

    叙述性说明 这些日子.兔子和蛋像一个新的棋盘游戏. 这场比赛是在 n 行 m 在船上进行列. 前,棋盘上有一 个格子是空的,其他的格子中都放置了一枚棋子,棋子或者是黑色,或者是白色. 每一局游戏总是兔 ...

  5. NSIS常用代码整理

    原文 NSIS常用代码整理 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ 1 ;获取操作系统盘符 2 ReadEnvStr $R0 SYSTEMDRIVE ...

  6. Gallatin(大陆版)Office365中Exchange Online混合部署功能已经能够使用了

    经过測试,Exchange混合部署已经能够使用了 前置条件: 本机至少须要一台Exchange Server 2013作为混合部署server 须要一个公网域名 domian.com,能够和内部域名不 ...

  7. avalonjs1.5 入门教程

    迷你MVVM框架 avalonjs1.5 入门教程 avalon经过几年以后,已成为国内一个举足轻重的框架.它提供了多种不同的版本,满足不同人群的需要.比如avalon.js支持IE6等老旧浏览器,让 ...

  8. JNLP(Java Web Start )(转)

    JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应 ...

  9. Visual studio 2013 bug:visual studio no editoroptiondefinition export found for the given option nam

    昨天VS 2013打开项目,双击cs当文件,下面出现bug. Google没有理由.最后,在刚刚好清理C磁盘缓存用户文件夹. 然后就OK了. 详细的路径是:C:\Users\{当前用户}\AppDat ...

  10. ABP领域层——领域事件(Domain events)

    ABP领域层——领域事件(Domain events) 基于DDD的现代ASP.NET开发框架--ABP系列之14.ABP领域层——领域事件(Domain events) ABP是“ASP.NET B ...