zoukankan      html  css  js  c++  java
  • A在SP.NET跨页多选

    在ASP.NET跨页多选


    本文介绍怎样在ASP.NET中实现多页面选择的问题。其详细思路非常easy:用隐藏的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


    }

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    吊打面试官系列:Redis 性能优化的 13 条军规大全
    Laravel 7.6 发布
    Laravel 8 新功能:使用 schema:dump 来加速 Migration 和测试
    php中常用的4种运行方式
    基于 Redis 的订阅与发布
    [ida]使用pycharm编写IDApython
    visual studio 配置使生成的pdb文件中包含所有符号
    D/B位、一致与非一致代码段、向下拓展的实验与总结
    [debug] CE指针扫描扫出来为空
    error LNK2019: 无法解析的外部符号 _main,该符号在函数___tmainCRTStartup 中被引用
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4677451.html
Copyright © 2011-2022 走看看