zoukankan      html  css  js  c++  java
  • 跨页传递参数或临时表的几种方法

    跨页传递参数或临时表的几种方法
    一、页面之间参数传递
             关于在页面之间传递参数的方法有很多,可以根据编程习惯或安全的需要使用不同的方法。
    1.直接在转向页面的后面加传递参数:
      需转到上一级目录如:Response.Redirect("../AddFolder/AddProd.aspx"+"?ID=2&&ClassName=水果");
      在当前目录如:Response.Redirect("AddProd.aspx"+"?ID=2&&ClassName=水果");
             获取方式:string id=Request["ID"];
    2.通过Session传递参数:
      例:Session["Prod"]="水果";
            获取方式:string prodStr=Session["Prod"];
    3.通过Cookie传递参数:
            例:HttpCookie prodCookie=new HttpCookie("Prod");
                 prodCookie.Value["prodID"]="2";//如果是Values就可以用于多个参数             
        Response.Cookies.Add(prodCookie);
    4.通过Application传递参数:
      例:Application["Prod"]="水果";
            获取方式:string prodStr=Application["Prod"];
    5.通过Cache传递参数(VB.Net),此方法可用于单点登录:
            例:Dim sKey As String="admin"
                    Dim sUser As String = Convert.ToString(Cache(sKey))
                    Dim de As System.Web.Caching.CacheDependency
                    Dim re As System.Web.Caching.CacheItemRemovedCallback
                    Dim SessTimeOut As TimeSpan = New TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0)
                    HttpContext.Current.Cache.Insert(sKey, sKey, de, DateTime.MaxValue, SessTimeOut, System.Web.Caching.CacheItemPriority.NotRemovable, re)

    二、传递临时表,比如购物车
      这样的方法应该也有很多,主要有存到数据库的表中、文本文件或其他文件中、存到DataTable/Hashtable中等等。这里主要介绍DataTable/Hashtable存临时表的方法。
    1.Hashtable存临时表,适合于表中的数据具有唯一性。
      例:Hashtable prodHT=(Hashtable)Session["selProd"];//建立Hashtable
                    //((CheckBox)(item.FindControl("selCB")))说明:DataGrid中的CheckBox控件
                    if (!(prodHT.ContainsKey(((CheckBox)(item.FindControl("selCB"))).Text.Trim())) )
                        prodHT.Add(((CheckBox)(item.FindControl("selCB"))).Text.Trim(),1);//不存在建立Hashtable键
                   else
                         prodHT[e.Item.Cells[1].Text.Trim()]=(int)prodHT[e.Item.Cells[1].Text.Trim()]+1;//多次点击时,数量值加1
                    string selProd = "('";//将Hashtable表中的键组成字符串
                    foreach (string tempStr in prodHT.Keys )
                            for (int i=0;i<(int)prodHT[tempStr];i++)
                                   selProd+=tempStr + "','";
                    selProd =selProd+ "')";
              cmd=new SqlCommand("select *from ProdTB where ProdAlias in "+selProd,conn);
             selectDg.DataSource=cmd.ExecuteReader();
                    selectDg.DataBind();//将数据绑定到DataGrid
                    Session["selProd"]=prodHT;//将Hashtable中数据存到Session
    2.DataTable存临时表,可以在表中插入重复数据。
      获取表结构,可以通过现在数据库中的表结构,也可以自己建立临时表结构。
    例:SqlDataAdapter da=new SqlDataAdapter("select ID,ProdAlias,ProdName,ProdScope ProdTB where ID=0",conn);
            DataSet ds=new DataSet();
            da.Fill(ds, "First");
         DataTable prodDT=ds.Tables["First"];//获取表结构
      //插入数据
      prodDT.Columns[0].AutoIncrementSeed=1;//ID自动增加初始值
            prodDT.Columns[0].AutoIncrement=true;//确定ID为自动增加列
            DataRow dr=prodDT.NewRow();
            dr["ProdAlias"]=((CheckBox)(item.FindControl("selCB"))).Text.Trim();
            dr["ProdName"]=item.Cells[1].Text.Trim();
            dr["ProdScope"]=item.Cells[2].Text.Trim();
             prodDT.Rows.Add(dr);
             //插入完数据后绑定到DataGrid
             selectDg.DataSource=prodDT;
             selectDg.DataBind();
             Session["selProd"]=prodDT;//将DataTable中数据存到Session

      有什么不妥之处,请大家指正。如有更好的方法,请帮我补充完整。

     

  • 相关阅读:
    格式化金额以及数字金额转为大写金额【前端】
    前端使用 validate , 根据条件进行动态的验证添加
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行
    在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本]
    公钥私钥加密解密数字证书数字签名详解【转】
    vs 2012/2013 等工具中,使用正则表达式,查找、替换
    javascript 正则(将数字转化为三位分隔的样式)【转】
    IE8 下面通过滤镜的方式进行图片旋转
    MYSQL5.5安装
    HTTP协议
  • 原文地址:https://www.cnblogs.com/hutie1980/p/1199684.html
Copyright © 2011-2022 走看看