有一个很奇怪的问题:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load            If Not IsPostBack Then
            Dim tbname As String = Session("dtname")         <--数据表名称-->
            Dim conn As SqlConnection
            conn = New SqlConnection("server=localhost;database=cjglxt;uid=sa;pwd=lwqyll1353")
            Dim sqldap As SqlDataAdapter
            sqldap = New SqlDataAdapter("select * from " & tbname & " where 1=0", conn)
            Session("ada") = sqldap
            sqldap.Fill(ds, "dtchengji")                 <--把数据库中的表结构填充到ds里面,没有数据-->
            Session("ds") = ds
            Session("mydata") = ds.Tables("dtchengji")    <--把ds里面的数据表赋值给session变量保存起来-->
   
        End If
end sub下面我给session("mydata")添加数据  Private Sub Btnext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnext.Click
        dtchengji = CType(Session("mydata"), DataTable)  
        rows = dtchengji.NewRow
        rows.Item("banji") = ddlnianji.SelectedItem.Value.ToString & "." & ddlbanji.SelectedItem.Value.ToString
        rows.Item("xuehao") = Txuehao.Text
        rows.Item("xingming") = Txingming.Text
        rows.Item("chengji") = CDec(Tchengji.Text)
        dtchengji.Rows.Add(rows)
        Session("mydata") = dtchengji
        Txuehao.Text = CStr(CLng(Txuehao.Text) + 1)
    End Sub然后把 session("ds")里面的数据表填充给datagrid(不是把session("mydata")填充给datagrid)。
但显示的数据却跟session("mydata")里面的数据一摸一样。
 Private Sub btpreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btpreview.Click
        Dg1.Visible = True    
        Dg1.DataSource = CType(Session("ds"), DataSet).Tables("dtchengji")
        Dg1.DataBind()
    End Sub我又没有往session("ds")里面添加数据,怎么最后显示却有数据呢?难道在page_load事件里面
Session("ds") = ds
Session("mydata") = ds.Tables("dtchengji")    
Session("mydata")跟Session("ds"),就已经建立起双向连接。更改任何一方会影响另外一方?

解决方案 »

  1.   

    sqldap.Fill(ds, "dtchengji")                 <--把数据库中的表结构填充到ds里面,没有数据-->
    Session("ds") = ds    'here session("ds")是ds的引用,上句已经给ds填充了表dtchengji
    Session("mydata") = ds.Tables("dtchengji")    'here Session("mydata")是表的引用
    Dg1.DataSource = CType(Session("ds"), DataSet).Tables("dtchengji")    'pageload中Session("ds")已被填充了数据,且被保存起来