如题!
一般一个字符串可以通过网址传过去,但如果是一个集合呢?大家都是用什么方法传过去的?
在过去我曾用过Session来传递。

解决方案 »

  1.   

    webform间传参的3种常用方式,任何一种多可以传多个参数
    1)request方式
      Response.Redirect("webform2.aspx?myid=123&myname=eddie005");
      取: string myID = Request.QueryString["myid"];
           string myName = Request.QueryString["myname"];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)}
       }   void button1_Click(..)
       {
         Server.Transfer("webForm2.aspx");
       }
    webForm2:
       void Page_Load(...)
      {
         if(!IsPostBack)
         {
              if(Context.Handler.ToString()=="ASP.webForm1_aspx")
    {
    webForm1 webForm =(webForm)Context.Handler;
    int myAge = webForm.MyAge;
    }
         }
      }
      

  2.   

    Js = "if(event.keyCode==13) "
                                Js += "{var desc=" + e.Item.Cells(I).Controls(1).ClientID + ".value;"
                                Js += "var nDialogWidth=700;var nDialogHeight=400;"
                                Js += "var nLeft=(window.screen.availWidth-nDialogWidth)/2;"
                                Js += "var nTop=(window.screen.availHeight-nDialogHeight)/2;"
                                Js += "var sFeatures='dialogLeft:'+nLeft+'px;dialogTop:'+nTop+'px;dialogHeight:'+nDialogHeight+'px;"
                                Js += "dialogWidth: '+nDialogWidth+'px;help:no;status:no';"
                                Js += "var bLogged=window.showModalDialog('Dialog_Item.aspx?type=0&desc='+escape(desc),window,sFeatures);"
                                Js += "if(bLogged != null) "
                                Js += "{" + e.Item.Cells(0).Controls(1).ClientID + ".value=bLogged[0];" 'UPC
                                Js += e.Item.Cells(I).Controls(1).ClientID + ".value=bLogged[2];" 'PART_NO
                                Js += e.Item.Cells(2).Controls(1).ClientID + ".value=bLogged[1];" 'BRAND
                                Js += e.Item.Cells(3).Controls(1).ClientID + ".value=bLogged[3];" 'DESCRIPTION
                                Js += e.Item.Cells(4).Controls(1).ClientID + ".value=bLogged[5];" '单位
                                'Js += e.Item.Cells(6).Controls(1).ClientID + ".value=bLogged[8];" 'BATCH_NO
                                'Js += e.Item.Cells(11).Controls(1).ClientID + ".value=bLogged[9];" 'COST
                                Js += e.Item.Cells(5).Controls(1).ClientID + ".focus();" + e.Item.Cells(5).Controls(1).ClientID + ".select()}}"
                                Obj.Attributes.Add("onkeydown", Js)上面是在datagrid上的某一textbox上回车之后弹出模式窗口,返回弹出窗口datagrid选择行的值     Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            Dim txt As Object
            Dim i As Integer
            If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
                For i = 0 To DataGrid1.Columns.Count - 1
                    txt = e.Item.Cells(i).Controls(1)
                    Dim Js As String
                    Js = "if(event.keyCode==13)"
                    Js += "{var a=new Array(DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Upc.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Brand.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Part_No.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_txt_Description.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_CATEGORY.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Unit.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Bom.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Qty.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_BatchNo.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_txt_cost.value,"
                    Js += "DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt_Itemno.value);"
                    Js += " window.opener=null;window.returnValue =a;window.close()}"
                    txt.Attributes.Add("onkeydown", Js)
                Next i
            End If
        End Sub上面是弹出窗口在datagrid上某一行敲回车 返回选择行的信息
      

  3.   

    如果是客户端的话,当然用cookies比较方便,不过它有几k的大小限制
      

  4.   

    可以使用Server.Transfer方法进行传递集合,用Context保存集合即可