本文介绍如何在ASP.NET中实现多页面选择的问题。其具体思路很简单:用隐藏的INPUT记住每次选择的项目,在进行数据绑定时,检查保存的值,再在DataGrid中进行选中显示。下面时完整的代码和例子:
SelectMultiPages.aspx
<br />&amp;lt;%@ Page EnableViewState=&quot;true&quot; CodeBehind=&quot;SelectMultiPages.aspx.cs&quot; Language=&quot;c#&quot; <br />AutoEventWireup=&quot;false&quot; Inherits=&quot;eMeng.Exam.SelectMultiPages&quot; %&amp;gt;<br />&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&amp;gt;<br />&amp;lt;HTML&amp;gt;<br />&amp;lt;HEAD&amp;gt;<br />&amp;lt;title&amp;gt;跨页面实现多选&amp;lt;/title&amp;gt;<br />&amp;lt;META http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=gb2312&quot;&amp;gt;<br />&amp;lt;style&amp;gt;<br />* {FONT-SIZE:12PX}<br />#Status {text-align:left}<br />&amp;lt;/style&amp;gt;<br />&amp;lt;script language=&quot;JAVASCRIPT&quot;&amp;gt;<br />function AddRemoveValues(oChk) { <br />//在处理这个地方需要注意的是:你保存的值应该具有唯一性,这样才能不会替换错误的项。<br />if(oChk.checked)<br />SelectMultiPage.HdnSelectedValues.value += &quot;,&quot; + oChk.value; <br />else<br />SelectMultiPage.HdnSelectedValues.value = SelectMultiPage.HdnSelectedValues.value.replace(&quot;,&quot; + oChk.value,&quot;&quot;); <br />}<br />&amp;lt;/script&amp;gt;<br />&amp;lt;/HEAD&amp;gt;<br />&amp;lt;BODY&amp;gt;<br />&amp;lt;form id=&quot;SelectMultiPage&quot; runat=&quot;server&quot;&amp;gt;<br />&amp;lt;asp:datagrid id=&quot;DataGrid1&quot; HorizontalAlign=&quot;Center&quot; AutoGenerateColumns=&quot;False&quot; Width=&quot;600px&quot;<br /> AllowPaging=&quot;True&quot; runat=&quot;server&quot;&amp;gt;<br /> &amp;lt;AlternatingItemStyle BackColor=&quot;#EEEEEE&quot;&amp;gt;&amp;lt;/AlternatingItemStyle&amp;gt;<br /> &amp;lt;HeaderStyle BackColor=&quot;#AAAADD&quot; Font-Bold=&quot;True&quot; HorizontalAlign=&quot;Center&quot;&amp;gt;&amp;lt;/HeaderStyle&amp;gt;<br /> &amp;lt;PagerStyle HorizontalAlign=&quot;Right&quot; Mode=&quot;NumericPages&quot; Visible=&quot;True&quot;&amp;gt;&amp;lt;/PagerStyle&amp;gt;<br /> &amp;lt;Columns&amp;gt;<br /> &amp;lt;asp:TemplateColumn HeaderText=&quot;选择&quot;&amp;gt;<br /> &amp;lt;ItemTemplate&amp;gt;<br /> &amp;lt;input type=&quot;checkbox&quot; runat=&quot;server&quot; id=&quot;chkSelect&quot; onclick=&quot;AddRemoveValues(this)&quot;<br /> value='&amp;lt;%#DataBinder.Eval(Container.DataItem,&quot;Title&quot;)%&amp;gt;'/&amp;gt;<br /> &amp;lt;/ItemTemplate&amp;gt;<br /> &amp;lt;/asp:TemplateColumn&amp;gt;<br /> &amp;lt;asp:TemplateColumn HeaderText=&quot;文章标题&quot;&amp;gt;<br /> &amp;lt;ItemTemplate&amp;gt;<br /> &amp;lt;asp:Literal Text='&amp;lt;%# DataBinder.Eval(Container.DataItem, &quot;Title&quot;) %&amp;gt;' runat=&quot;server&quot; ID=&quot;TitleShow&quot;/&amp;gt;<br /> &amp;lt;/ItemTemplate&amp;gt;<br /> &amp;lt;/asp:TemplateColumn&amp;gt;<br /> &amp;lt;asp:TemplateColumn HeaderText=&quot;发布时间&quot;&amp;gt;<br /> &amp;lt;ItemTemplate&amp;gt;<br /> &amp;lt;asp:Literal Text='&amp;lt;%# DataBinder.Eval(Container.DataItem, &quot;CreateDate&quot;).ToString() %&amp;gt;' runat=&quot;server&quot;/&amp;gt;<br /> &amp;lt;/ItemTemplate&amp;gt;<br /> &amp;lt;/asp:TemplateColumn&amp;gt;<br /> &amp;lt;/Columns&amp;gt;<br />&amp;lt;/asp:datagrid&amp;gt;<br />&amp;lt;div align=center&amp;gt;<br />&amp;lt;asp:button id=&quot;Button1&quot; runat=&quot;server&quot; Text=&quot;得到所选的值&quot;&amp;gt;&amp;lt;/asp:button&amp;gt;<br />&amp;lt;div id=&quot;Status&quot;&amp;gt;<br />&amp;lt;asp:label id=&quot;Label1&quot; runat=&quot;server&quot;&amp;gt;&amp;lt;/asp:label&amp;gt;<br />&amp;lt;/div&amp;gt;<br />&amp;lt;INPUT id=&quot;HdnSelectedValues&quot; type=&quot;hidden&quot; name=&quot;HdnSelectedValues&quot; runat=&quot;server&quot;&amp;gt;<br />&amp;lt;/div&amp;gt;<br />&amp;lt;/form&amp;gt;<br />&amp;lt;/BODY&amp;gt;<br />&amp;lt;/HTML&amp;gt;<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 />/// &amp;lt;summary&amp;gt;<br />/// SelectMultiPages 的摘要说明。<br />/// &amp;lt;/summary&amp;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 /><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(&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; <br /> + HttpContext.Current.Server.MapPath(&quot;aspx.mdb&quot;));<br /> OleDbDataAdapter da = new OleDbDataAdapter(&quot;Select Title, CreateDate from Document&quot;,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(&quot;TitleShow&quot;)).Text) &amp;gt;= 0 )<br /> {<br /> HtmlInputCheckBox ChkSelected = (HtmlInputCheckBox)(e.Item.Cells[0].FindControl(&quot;ChkSelect&quot;));<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(&quot;,&quot;,&quot;&amp;lt;li&amp;gt;&quot;);<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 />/// &amp;lt;summary&amp;gt;<br />/// 设计器支持所需的方法 - 不要使用代码编辑器修改<br />/// 此方法的内容。<br />/// &amp;lt;/summary&amp;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 />}<br />#endregion <br /><br />}<br />} |