`
luliangok
  • 浏览: 816960 次
文章分类
社区版块
存档分类
最新评论

(Grid)跨页面实现多选

 
阅读更多




本文介绍如何在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"
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

}
}

分享到:
评论

相关推荐

    unigui自定义下拉combobox

    Unigui是一个基于Delphi技术的跨平台Web应用开发框架。它允许开发者使用Delphi语言和VCL组件库来创建Web应用程序,提供了一种与原生桌面应用开发相似的体验。通过Unigui,开发者可以利用其强大的组件库和事件驱动的...

    jquery多选按钮美化特效

    要确保美化后的多选按钮在不同设备和屏幕尺寸下都能正常工作,需要使用媒体查询(media queries)和流式布局(flexbox或grid)等技术。 7. **实例与源码分析**:提供的压缩包文件包含了具体的实现代码和实例,通过...

    日历的实现

    4. **多选逻辑**:实现多选功能需要考虑如何选择和取消选择日期,以及如何保持已选择日期的状态。这可能需要实现一些自定义的逻辑,例如通过遍历日期列表,检查和更新每个日期的选中状态。 5. **数据持久化**:如果...

    dhtmlxGrid2.5

    2. **动态加载**:dhtmlxGrid能够根据用户的滚动行为动态加载数据,减少了页面加载时的数据量,提升了用户体验。 3. **数据编辑**:提供了多种数据编辑模式,如点击单元格编辑、行内编辑等,方便用户对表格数据进行...

    常用ligui页面,常用控件

    4. **响应式设计**:确保Ligui页面在不同设备和屏幕尺寸上都能良好显示,提升跨平台兼容性。 5. **国际化和本地化**:支持多语言,满足全球用户的使用需求。 在实际项目中,开发者会根据压缩包中的“ligui”文件...

    js的14个小程序

    14. **浏览器兼容性处理**:由于不同浏览器对JS的实现可能略有差异,开发者需要考虑跨浏览器兼容性,使用如Modernizr等库来检测浏览器特性,或者使用polyfill提供缺失的功能。 通过这个“js的14个小程序”,你可以...

    TMS FMX UI Pack 3.7.2.3 Demos.rar

    10. **PageSlider**:页面滑动控制器,允许用户在多个内容页面之间平滑过渡,常用于构建多页面应用或实现类似手机APP的滑动效果。 通过TMS FMX UI Pack 3.7.2.3,开发者能够轻松地构建出界面美观、交互性优秀的跨...

    jQuery拖拽插件啦啦啦

    这些插件通常更轻量级,且具有特定的功能,如网格布局、多选拖拽等。例如,`gridstack.js`可以方便地创建可拖动和可调整大小的网格布局。 4. **事件处理**: 在拖拽过程中,jQuery拖拽插件通常会触发一些事件,如`...

    ExtJS(ajax框架) 4.2.1

    单选行,多选行,高亮显示选中的行,拖拽改变列宽度,按列排序,这些基本功能ExtJS轻量级实现。 自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染...

    UniGUI集合说明

    从ASP网站登录到UniGUI涉及跨平台的认证机制,需要在两个系统之间实现用户身份验证的同步。 #### 48. UniGUI数据库初始化要放到MainModule里 将数据库初始化逻辑放在`MainModule`中是合理的做法,因为该模块在整个...

    jQuery Mobile 架包

    jQuery Mobile通过AJAX技术实现了页面间的平滑导航,使得用户在不同页面间切换时无需重新加载整个页面,提高了用户体验。 2. **触控友好的界面(Touch-friendly Interface)** 设计了大量的触摸事件处理,如点击...

    SMDropDownList下拉弹框适用于移动端

    在移动应用中,这种组件通常用于实现选项选择、搜索过滤或者菜单展示等功能,使得用户可以快速访问或操作隐藏在屏幕下方的更多内容,而无需频繁滑动页面。 ### 1. JavaScript开发基础 JavaScript是网页开发中的重要...

    jqgrid帮组文档

    - **跨平台性**:可与各种服务器端技术配合使用。 - **高性能**:利用 Ajax 技术实现快速数据加载。 - **扩展性**:提供了丰富的 API 和方法,方便进行定制化开发。 - **用户友好**:支持排序、分页、编辑、搜索等...

    I-Poll投票程序

    I-Poll应防范SQL注入、跨站脚本攻击(XSS)等常见Web漏洞。PHP的预处理语句和参数绑定可以有效防止SQL注入,而对用户输入进行过滤和转义则有助于抵御XSS攻击。 5. 用户认证与权限管理: 如果需要限制投票次数或者仅...

    Flex 3 组件实例与应用(2009版)

    - **Grid/GridItem/GridRow** - 表格容器及表格元素。 - **HBox** - 水平布局容器。 - **HDivideBox** - 水平分割容器。 - **Panel** - 面板容器。 - **TabNavigator** - 选项卡导航容器。 - **Title** - 标题容器。...

    Learning-Web-Technologies-Spring-2020-2021-sec-g

    - 使用媒体查询(`@media`)根据设备屏幕尺寸应用不同的CSS规则,实现跨设备兼容。 - Flexbox布局模型,用于创建灵活、响应式的容器及其子元素。 - Grid布局系统,提供二维网格布局,适合复杂页面结构。 以上...

    Learn-SwiftUI:了解Packt发行的SwiftUI

    6. **导航(Navigation)**:在iOS应用中,SwiftUI提供了NavigationView来实现导航栏和页面间的跳转。 7. **表视图(Table Views)**:SwiftUI提供了List视图来创建列表和表格,支持单选或多选。 8. **表单(Forms...

Global site tag (gtag.js) - Google Analytics