跨页面实现多选

本文介绍如何在ASP.NET中实现多页面选择的问题。其具体思路很简单:用隐藏的INPUT记住每次选择的项目,在进行数据绑定时,检查保存的值,再在DataGrid中进行选中显示。下面时完整的代码和例子:

查看例子

SelectMultiPages.aspx

      <br /><%@ Page EnableViewState="true" CodeBehind="SelectMultiPages.aspx.cs" Language="c#" <br />AutoEventWireup="false" Inherits="eMeng.Exam.SelectMultiPages" %><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><br /><HTML><br /><HEAD><br /><title>跨页面实现多选</title><br /><META http-equiv="content-type" content="text/html; charset=gb2312"><br /><style><br />* {FONT-SIZE:12PX}<br />#Status {text-align:left}<br /></style><br /><script language="JAVASCRIPT"><br />function AddRemoveValues(oChk) { <br />//在处理这个地方需要注意的是:你保存的值应该具有唯一性,这样才能不会替换错误的项。<br />if(oChk.checked)<br />SelectMultiPage.HdnSelectedValues.value += "," + oChk.value; <br />else<br />SelectMultiPage.HdnSelectedValues.value = SelectMultiPage.HdnSelectedValues.value.replace("," + oChk.value,""); <br />}<br /></script><br /></HEAD><br /><BODY><br /><form id="SelectMultiPage" runat="server"><br /><asp:datagrid id="DataGrid1" HorizontalAlign="Center" AutoGenerateColumns="False" Width="600px"<br /> AllowPaging="True" runat="server"><br /> <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle><br /> <HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle><br /> <PagerStyle HorizontalAlign="Right" Mode="NumericPages" Visible="True"></PagerStyle><br /> <Columns><br /> <asp:TemplateColumn HeaderText="选择"><br /> <ItemTemplate><br /> <input type="checkbox" runat="server" id="chkSelect" οnclick="AddRemoveValues(this)"<br /> value='<%#DataBinder.Eval(Container.DataItem,"Title")%>'/><br /> </ItemTemplate><br /> </asp:TemplateColumn><br /> <asp:TemplateColumn HeaderText="文章标题"><br /> <ItemTemplate><br /> <asp:Literal Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>' runat="server" ID="TitleShow"/><br /> </ItemTemplate><br /> </asp:TemplateColumn><br /> <asp:TemplateColumn HeaderText="发布时间"><br /> <ItemTemplate><br /> <asp:Literal Text='<%# DataBinder.Eval(Container.DataItem, "CreateDate").ToString() %>' runat="server"/><br /> </ItemTemplate><br /> </asp:TemplateColumn><br /> </Columns><br /></asp:datagrid><br /><div align=center><br /><asp:button id="Button1" runat="server" Text="得到所选的值"></asp:button><br /><div id="Status"><br /><asp:label id="Label1" runat="server"></asp:label><br /></div><br /><INPUT id="HdnSelectedValues" type="hidden" name="HdnSelectedValues" runat="server"><br /></div><br /></form><br /></BODY><br /></HTML><br /> 
    

SelectMultiPages.aspx.cs

      <br />using System;<br />using System.Collections;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Data.OleDb;<br />using System.Drawing;<br />using System.Web;<br />using System.Web.SessionState;<br />using System.Web.UI;<br />using System.Web.UI.WebControls;<br />using System.Web.UI.HtmlControls;<br /><br />namespace eMeng.Exam<br />{<br />/// <summary><br />/// SelectMultiPages 的摘要说明。<br />/// </summary><br />public class SelectMultiPages : System.Web.UI.Page<br />{<br />protected System.Web.UI.WebControls.Button Button1;<br />protected System.Web.UI.WebControls.Label Label1;<br />protected System.Web.UI.HtmlControls.HtmlInputHidden HdnSelectedValues;<br />protected System.Web.UI.WebControls.DataGrid DataGrid1;<br /><br />private void Page_Load(object sender, System.EventArgs e)<br />{<br /> // 在此处放置用户代码以初始化页面<br /> if(!Page.IsPostBack)<br /> BindData();<br />}<br />private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)<br />{<br /> DataGrid1.CurrentPageIndex = e.NewPageIndex;<br /> BindData(); <br />}<br /><br />void BindData()<br />{<br /> OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" <br /> + HttpContext.Current.Server.MapPath("aspx.mdb"));<br /> OleDbDataAdapter da = new OleDbDataAdapter("Select Title, CreateDate from Document",cn);<br /> DataSet ds = new DataSet();<br /> da.Fill(ds);<br /> DataGrid1.DataSource= ds;<br /> DataGrid1.DataBind();<br />}<br /><br />private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)<br />{<br /> //重新显示所选择的项目<br /> if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)<br /> {<br /> if(HdnSelectedValues.Value.IndexOf(((Literal)e.Item.Cells[1].FindControl("TitleShow")).Text) >= 0 )<br /> {<br /> HtmlInputCheckBox ChkSelected = (HtmlInputCheckBox)(e.Item.Cells[0].FindControl("ChkSelect"));<br /> ChkSelected.Checked = true;<br /> }<br /> }<br />}<br />private void Button1_Click(object sender, System.EventArgs e)<br />{<br /> //为了显示的方便进行替换的<br /> Label1.Text = HdnSelectedValues.Value.Replace(",","<li>");<br />}<br /><br />#region Web 窗体设计器生成的代码<br />override protected void OnInit(EventArgs e)<br />{<br /> //<br /> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br /> //<br /> InitializeComponent();<br /> base.OnInit(e);<br />}<br /><br />/// <summary><br />/// 设计器支持所需的方法 - 不要使用代码编辑器修改<br />/// 此方法的内容。<br />/// </summary><br />private void InitializeComponent()<br />{ <br /> this.DataGrid1.ItemDataBound += <br /> new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);<br /> this.DataGrid1.PageIndexChanged += <br /> new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);<br /> this.Button1.Click += new System.EventHandler(this.Button1_Click);<br /> this.Load += new System.EventHandler(this.Page_Load);<br /><br />}<br />#endregion <br /><br />}<br />} 
    
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值