在ASP.NET中跨页面实现多选

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

查看例子

SelectMultiPages.aspx

1@ Page EnableViewState="true" CodeBehind="SelectMultiPages.aspx.cs" Language="c#"   
2AutoEventWireup="false" Inherits="eMeng.Exam.SelectMultiPages" 
 1<html>
 2<head>
 3<title>跨页面实现多选</title>
 4<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
 5<style>   
 6* {FONT-SIZE:12PX}   
 7#Status {text-align:left}   
 8</style>
 9<script language="JAVASCRIPT">   
10function AddRemoveValues(oChk) {   
11//在处理这个地方需要注意的是:你保存的值应该具有唯一性,这样才能不会替换错误的项。   
12if(oChk.checked)   
13SelectMultiPage.HdnSelectedValues.value += "," + oChk.value;   
14else   
15SelectMultiPage.HdnSelectedValues.value = SelectMultiPage.HdnSelectedValues.value.replace("," + oChk.value,"");   
16}   
17</script>
18</head>
19<body>
20<form id="SelectMultiPage" runat="server">
21<asp:datagrid allowpaging="True" autogeneratecolumns="False" horizontalalign="Center" id="DataGrid1" runat="server" width="600px">
22<alternatingitemstyle backcolor="#EEEEEE"></alternatingitemstyle>
23<headerstyle backcolor="#AAAADD" font-bold="True" horizontalalign="Center"></headerstyle>
24<pagerstyle horizontalalign="Right" mode="NumericPages" visible="True"></pagerstyle>
25<columns>
26<asp:templatecolumn headertext="选择">
27<itemtemplate>
28<input id="chkSelect" onclick="AddRemoveValues(this)" runat="server" type="checkbox" value='```
29#DataBinder.Eval(Container.DataItem,"Title")
30```'/>
31</itemtemplate>
32</asp:templatecolumn>
33<asp:templatecolumn headertext="文章标题">
34<itemtemplate>
35<asp:literal id="TitleShow" runat="server" text='```
36# DataBinder.Eval(Container.DataItem, "Title") 
37```'></asp:literal>
38</itemtemplate>
39</asp:templatecolumn>
40<asp:templatecolumn headertext="发布时间">
41<itemtemplate>
42<asp:literal runat="server" text='```
43# DataBinder.Eval(Container.DataItem, "CreateDate").ToString() 
44```'></asp:literal>
45</itemtemplate>
46</asp:templatecolumn>
47</columns>
48</asp:datagrid>
49<div align="center">
50<asp:button id="Button1" runat="server" text="得到所选的值"></asp:button>
51<div id="Status">
52<asp:label id="Label1" runat="server"></asp:label>
53</div>
54<input id="HdnSelectedValues" name="HdnSelectedValues" runat="server" type="hidden"/>
55</div>
56</form>
57</body>
58</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
{
///

1<summary>   
2/// SelectMultiPages 的摘要说明。   
3/// </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(",","

 1<li>");   
 2} 
 3
 4#region Web 窗体设计器生成的代码   
 5override protected void OnInit(EventArgs e)   
 6{   
 7//   
 8// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。   
 9//   
10InitializeComponent();   
11base.OnInit(e);   
12} 
13
14/// <summary>   
15/// 设计器支持所需的方法 - 不要使用代码编辑器修改   
16/// 此方法的内容。   
17/// </summary>   
18private void InitializeComponent()   
19{   
20this.DataGrid1.ItemDataBound +=   
21new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);   
22this.DataGrid1.PageIndexChanged +=   
23new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);   
24this.Button1.Click += new System.EventHandler(this.Button1_Click);   
25this.Load += new System.EventHandler(this.Page_Load); 
26
27}   
28#endregion 
29
30}   
31}</li>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus