只能改变完了以后再给SESSION赋一次值了 

解决方案 »

  1.   

    楼上说的对,Session本来只是存储用的
      

  2.   

    just make changes to Local_DT, no need to reassign to the Session, don't worry, it is just a reference, the changes will be in Session
      

  3.   

    我写了这样的一个测试页,在这段程序里,我希望Local_DT改变的同时,table也同时改变。<%@Page debug=true%>
    <%@Import Namespace="System.Data"%>
    <%@Import Namespace="System.IO"%>
    <script language="C#" runat="server">//DataTable table=new DataTable();void Page_Load(object src,EventArgs e)
    {
    if(!IsPostBack)
    {

    table.Columns.Add(new DataColumn("addr",typeof(string)));
    table.Columns.Add(new DataColumn("name",typeof(string)));
    DataRow row;
    for(int i=0;i<10;i++)
    {
    row=table.NewRow();
    row["addr"]="addr "+i.ToString();
    row["name"]="name "+i.ToString();
    table.Rows.Add(row);
    }
    Session["DT"]=table;
    Response.Write(table.Rows[0]["name"].ToString());
    }
    }void btnReturn_Click(Object s,EventArgs e)
           
    {
    DataTable Local_DT = (DataTable) Session["DT"]; Local_DT.Rows[0]["name"]="Changed!";

    Response.Write(table.Rows[0]["name"].ToString());
    } </script>
    <HTML><HEAD>
    <TITLE>  </TITLE>
    </HEAD><BODY>
    <form runat="server"><asp:Button  onclick="btnReturn_Click" runat="server" text="ChangeTable"></asp:Button>
    </form></BODY></HTML>
    报错:Response.Write(table.Rows[0]["name"].ToString());
    //System.IndexOutOfRangeException: 在位置 0 处没有任何行。
      

  4.   

    void Page_Load(object src,EventArgs e)
    {
    if(!IsPostBack)
    {
    DataTable table=new DataTable();
    table.Columns.Add(new DataColumn("addr",typeof(string)));
    table.Columns.Add(new DataColumn("name",typeof(string)));
    DataRow row;
    for(int i=0;i<10;i++)
    {
    row=table.NewRow();
    row["addr"]="addr "+i.ToString();
    row["name"]="name "+i.ToString();
    table.Rows.Add(row);
    }
    Session["DT"]=table;
    Response.Write(table.Rows[0]["name"].ToString());
    }
    }
      

  5.   

    我希望按钮点下去的时候,随着Local_DT.Rows[0]["name"]="被赋值,table.Rows[0]["name"]同时改变,DataTable table=new DataTable();声明在函数里面,
    Response.Write(table.Rows[0]["name"].ToString());就会出错了。
    void btnReturn_Click(Object s,EventArgs e)
           
    {
    DataTable Local_DT = (DataTable) Session["DT"]; Local_DT.Rows[0]["name"]="Changed!";

    Response.Write(table.Rows[0]["name"].ToString());

    }
      

  6.   

    you need to initialized member instance variables,<%@Page debug=true%>
    <%@Import Namespace="System.Data"%>
    <%@Import Namespace="System.IO"%>
    <script language="C#" runat="server">DataTable table;void Page_Load(object src,EventArgs e)
    {
    if(Session["DT"]==null)
    {
    table = new DataTable();
    table.Columns.Add(new DataColumn("addr",typeof(string)));
    table.Columns.Add(new DataColumn("name",typeof(string)));
    DataRow row;
    for(int i=0;i<10;i++)
    {
    row=table.NewRow();
    row["addr"]="addr "+i.ToString();
    row["name"]="name "+i.ToString();
    table.Rows.Add(row);
    }
    Session["DT"]=table;
    Response.Write(table.Rows[0]["name"].ToString());
    }         table = (DataTable)Session["DT"];}void btnReturn_Click(Object s,EventArgs e)
           
    {
    DataTable Local_DT = (DataTable) Session["DT"]; Local_DT.Rows[0]["name"]="Changed!";

    Response.Write(table.Rows[0]["name"].ToString());
    } </script>
    <HTML><HEAD>
    <TITLE>  </TITLE>
    </HEAD><BODY>
    <form runat="server"><asp:Button  onclick="btnReturn_Click" runat="server" text="ChangeTable"></asp:Button>
    </form></BODY></HTML>