A在SP.NET跨页多选

在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

}

}

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

时间: 2024-08-26 10:07:36

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

Vue中使用Element-UI实现表格跨页多选

跨页多选翻页保存问题折磨了我一天,终于找到了合适的解决方法分享一下. 需求: 项目中使用Element-UI: 表格中数据通过网络请求得到: 给后台接口发送页码(pagenum)和每一页条数(pagesize)实现数据分页: 实现单页内全选 翻页保存之前选中的数据 解决方式: 使用官方文档中提供的row-key属性和reserve-selection属性搭配使用 在表格中设置row-key属性,并将该属性设置为当前渲染数据的json中的唯一标识(比如id之类,我的例子里字段名叫bridgecod

web跨页弹窗选值

最近在项目中看到这样一种效果——点击当前网页文本框,然后弹出一个缩小的网页,并在网页里选择或填写数据,然后又返回当前网页,小网页关闭.感觉非常不错,其实在以前网上也看见过,只是当时没有留心.今天抽时间把它从项目中提炼出来,给自己做一个笔记,以备下次只需.不废话了. 第一步新建两个页面分别取名为A.html,B.html. 第二步编写页面代码如下 A.html页面 <html> <head> <meta content="text/html; charset=utf-

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

parts.ports.alias等等均可以在"属性编辑器(Property Editor)"中进行查看编辑,并通过复制到Excel等表格软件来进行批量修改.之后再粘贴回去的方法进行批量编辑.但是"跨页连接器(off-page connector)"无法在Property Editor中进行查看和编辑. 选择多个off-page connector之后,通过"Ctrl+E"或者"右键-->Edit Properties"

layui table 跨页记忆选择

layui 表格功能目前默认不支持跨页记忆选择 下面来实现layui table跨页记忆选择实现 基于layui版本 1.4.5 表格跨页通用方法 //表格分页复选框 layui.define(['jquery', 'table'], function (exports) { var $ = layui.jquery , table = layui.table; //记录选中表格记录编号http://www.1994july.club/seo/?p=2797 var checkedList =

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

在最近所做的一个项目中,需要通过网页来打印不少的表单,但是又不想每个打印页签各占用一个页面,这样就需要生存很多不同的冗余页面,为了减少冗余,所有的表单通过jquery的页签tab来实现的. 一 :基本打印的实现: 1:tab页签在切换时的change事件中,记住每个页签的index, 2:在点击打印按钮时,根据所记住的index,由页签的id("tab名+index"组成),获取当前tab页签下所有的html; 3: 将获取到的需要打印页签的html赋值给document.body.i

关于云主机Thinkphp框架Session跨页失效的问题

在网站部署到云主机之后,前台一直能够正常显示,后台确登录不上去,验证码也无法显示,研究半天,才确定是Session跨页传递失效的问题.找网上各种解决方法,都是关于Php.ini文件的设置,可又解决不了问题,于是狠下心来研究,最后确定是Session路径的问题.由于Thinkphp的Session默认不是保存在网站目录下,导致Session无效的问题,最后更改Session的保存路径,成功解决了问题. 具体解决办法: 1.在index.php中定义session保存路径: define('ROOT

jqgrid 翻页记录选中行

简单的jqgrid列表 $("#list").jqGrid({ url:contextPath + "/getList", postData: data, datatype:"json", colNames : [ '用户名','密码'], colModel : [ { name : 'name', index : 'name', align : 'center' }, { name : 'psw', index : 'psw', align :

列表页复选框全选效果

$(function () { //全选按钮单击事件 $("#cbkAll").live("click", function () { $(".id").attr("checked", $(this).is(':checked')); }); //单个复选框单击事件 $(".id").live("click", function () { var amount = $(".id

jquery小代码之整页全选

待整理...... 关于checkbox $("[name='checkbox']").attr("checked",'true');//全选 $("[name='checkbox']").removeAttr("checked");//取消全选 $("[name='checkbox']:even").attr("checked",'true');//选中所有奇数 反选 $("