现在的位置: 首页 > 综合 > 正文

跨页面实现多选

2013年01月12日 ⁄ 综合 ⁄ 共 4357字 ⁄ 字号 评论关闭

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

查看例子

SelectMultiPages.aspx

&lt;%@ Page EnableViewState="true" CodeBehind="SelectMultiPages.aspx.cs" Language="c#"<br /> AutoEventWireup="false" Inherits="eMeng.Exam.SelectMultiPages" %&gt;<br /> &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<br /> &lt;HTML&gt;<br /> &lt;HEAD&gt;<br /> &lt;title&gt;跨页面实现多选&lt;/title&gt;<br /> &lt;META http-equiv="content-type" content="text/html; charset=gb2312"&gt;<br /> &lt;style&gt;<br /> * {FONT-SIZE:12PX}<br /> #Status {text-align:left}<br /> &lt;/style&gt;<br /> &lt;script language="JAVASCRIPT"&gt;<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 /> &lt;/script&gt;<br /> &lt;/HEAD&gt;<br /> &lt;BODY&gt;<br /> &lt;form id="SelectMultiPage" runat="server"&gt;<br /> &lt;asp:datagrid id="DataGrid1" HorizontalAlign="Center" AutoGenerateColumns="False" Width="600px"<br /> AllowPaging="True" runat="server"&gt;<br /> &lt;AlternatingItemStyle BackColor="#EEEEEE"&gt;&lt;/AlternatingItemStyle&gt;<br /> &lt;HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"&gt;&lt;/HeaderStyle&gt;<br /> &lt;PagerStyle HorizontalAlign="Right" Mode="NumericPages" Visible="True"&gt;&lt;/PagerStyle&gt;<br /> &lt;Columns&gt;<br /> &lt;asp:TemplateColumn HeaderText="选择"&gt;<br /> &lt;ItemTemplate&gt;<br /> &lt;input type="checkbox" runat="server" id="chkSelect" onclick="AddRemoveValues(this)"<br /> value='&lt;%#DataBinder.Eval(Container.DataItem,"Title")%&gt;'/&gt;<br /> &lt;/ItemTemplate&gt;<br /> &lt;/asp:TemplateColumn&gt;<br /> &lt;asp:TemplateColumn HeaderText="文章标题"&gt;<br /> &lt;ItemTemplate&gt;<br /> &lt;asp:Literal Text='&lt;%# DataBinder.Eval(Container.DataItem, "Title") %&gt;' runat="server" ID="TitleShow"/&gt;<br /> &lt;/ItemTemplate&gt;<br /> &lt;/asp:TemplateColumn&gt;<br /> &lt;asp:TemplateColumn HeaderText="发布时间"&gt;<br /> &lt;ItemTemplate&gt;<br /> &lt;asp:Literal Text='&lt;%# DataBinder.Eval(Container.DataItem, "CreateDate").ToString() %&gt;' runat="server"/&gt;<br /> &lt;/ItemTemplate&gt;<br /> &lt;/asp:TemplateColumn&gt;<br /> &lt;/Columns&gt;<br /> &lt;/asp:datagrid&gt;<br /> &lt;div align=center&gt;<br /> &lt;asp:button id="Button1" runat="server" Text="得到所选的值"&gt;&lt;/asp:button&gt;<br /> &lt;div id="Status"&gt;<br /> &lt;asp:label id="Label1" runat="server"&gt;&lt;/asp:label&gt;<br /> &lt;/div&gt;<br /> &lt;INPUT id="HdnSelectedValues" type="hidden" name="HdnSelectedValues" runat="server"&gt;<br /> &lt;/div&gt;<br /> &lt;/form&gt;<br /> &lt;/BODY&gt;<br /> &lt;/HTML&gt;<br />

SelectMultiPages.aspx.cs

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 /> namespace eMeng.Exam<br /> {<br /> /// &lt;summary&gt;<br /> /// SelectMultiPages 的摘要说明。<br /> /// &lt;/summary&gt;<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 /> 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 /> 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 /> 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) &gt;= 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(",","&lt;li&gt;");<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 /> /// &lt;summary&gt;<br /> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<br /> /// 此方法的内容。<br /> /// &lt;/summary&gt;<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 /> #endregion<br /> }<br /> }<br />  

抱歉!评论已关闭.