我需要在两个页面之间传递类型为DataTable 的对象。请问用什么方法呢?

解决方案 »

  1.   

    ◆ 1页面间传参的常用方式
    1)request方式:仅适用于一个或多个字符串
      Response.Redirect("webform2.aspx?myid=123&myname=eddie005");
      取: string myID = Request.QueryString["myid"];
           string myName = Request.QueryString["myname"];
    但是该方法传参遇到特殊的字符例如“”&、“+”等就会有问题,所以需要进行编码转换:
    string tmpID = Server.UrlEncode("123");
              string tmpName = Server.UrlEncode("暴&走");
    Response.Redirect("webform1.aspx?myid=" + tmpID + "&myname=" + tmpName);
    取: string myID = Server.UrlDecode(Request.QueryString["myid"]);
               string myName = Server.UrlDecode(Request.QueryString["myname"]);
    对应的Javascript函数是escape()和unescape()2)Session:适用于对象
      存:Session["myTable"] = new DataTable();
      取:DataTable tmp = Session["myTable"] as DataTable;3)Server.Transfer:适用于对象
    webForm1:
           public int MyAge
            {
                get{return Convert.ToInt32(TextBox1.Text);}
            }
            public DataTable MyTable
            {
                get{return myDataTable;}
            }        private void Button1_Click(object sender, System.EventArgs e)
            {
                Server.Transfer("webForm2.aspx");
        }
    webForm2:
       private void Page_Load(object sender, System.EventArgs e)
            {
                if(!IsPostBack)
                {
                    if(Context.Handler.ToString()=="ASP.webForm1_aspx")
                    {
                        webForm1 webForm =(webForm)Context.Handler;
                        int myAge = webForm.MyAge;
                        DataTable tmpTable = webForm.MyTable;
                    }
                }
       }
      

  2.   

    Microsoft 的网站里有相关的说明wenform1.aspx 中加入一个属性Public Readonly Property Property1() as string
    Get
       return  ...DataTable
    End Get
    然后再本页的按钮事件中加入 
    Server.Transfer("webform2.aspx")
    webform2
    定义一个公共全局变量
    Public sourcePage as webForm1
    If not Page.IsPostBack Then
     SourcePage =Ctype(Context.Handler,WebForm1)
     label1.Text = sourcePage.Property1
      

  3.   

    支持  Eddie005(♂) 暴赱 『零零伍』 (︶︵︶) 的说法,
    他讲的很清楚了
      

  4.   

    补充: Eddie005(♂) 暴赱 『零零伍』 (︶︵︶) ( )
    application,Context.Items[]
      

  5.   

    还可以通过QueryString的方式来传递,把DataTable序列化成STRING然后传过去,再反序化。
    不过不知道QueryString有没有长度限制。
      

  6.   

    QueryString http1.0只支持255个字符,http1.1没有这个限制