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

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

     

  • 相关阅读:
    red hat linux下安装mysql
    oracle数据库sys与system默认密码
    eclipse 创建maven web项目
    mysql-5.7.17-winx64的安装配置
    有趣的浏览器地址栏JavaScript代码
    jsp自定义标签Tag
    exp:CollectionSecurity must be empty, but is not; jsp自定义标签异常
    java中&与&&的区别
    解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题
    java itextpdf使用HTML模板生成pdf文件,并设置table
  • 原文地址:https://www.cnblogs.com/hutie1980/p/1199684.html
Copyright © 2011-2022 走看看