首页 | 麦客学吧 | 视频教程 | FLASH小游戏 | 素材下载 | 常用工具
您当前的位置:首页 > 程序开发 > ASP.NET > 正文

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

出处:麦客学吧 [2007-12-25 7:55:56] 点击数:364
  本文介绍如何在ASP.NET中实现多页面选择的问题。其具体思路很简单:用隐藏的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" 字串1  
 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  

}

【责任编辑: lanier

关于 ASP.NET 多选 的相关文章
昵 称:麦客网友[游客]  如果您不想匿名评论请先登录注册
评 论:请自觉遵守互联网相关政策法规,管理员有权删除恶意评论、广告和违禁词语。

验证码: 验证码,看不清楚?请点击刷新验证码    
麦客酷站赏析频道

精彩图文推荐

关于本站 - 联系站长 - 广告服务 - 合作伙伴 - 网站地图 - 版权声明 - 报告错误 - 收藏本站 | Http://www.MaiCoo.com

Copyright © 2005 - 2008 MaiCoo.com All Rights Reserved

违法和不良信息举报中心 本站服务器空间和带宽由雷克斯网络提供赞助
浙ICP备06017818号