public partial class modifyuser : System.Web.UI.Page
{
    SqlConnection dbConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    SqlDataAdapter dataAdapter = new SqlDataAdapter();
    DataSet dataset = new DataSet();    protected void Page_Load(object sender, EventArgs e)
    {
       ............;
    }    protected void modifyButton_Click(object sender, EventArgs e)
    {
       .............;
       Response.Write(dataset.Tables[0].Rows.Count.ToString());      //dataset中却没有表格存在了?
    }    protected void Button1_Click(object sender, EventArgs e)
    {
        ............;
        SqlCommand cmd = new SqlCommand(queryStr, dbConnection);
        dataAdapter.SelectCommand = cmd;
        dataAdapter.Fill(dataset, "users");
        Response.Write(dataset.Tables[0].Rows.Count.ToString());     //返回行数正常
    }
}SqlConnection、SqlDataAdapter、DataSet都已经定义为全局变量了,首先触发Button1_Click()事件之后,将一张Tables表格放入了全局对象DataSet中,但是在之后触发modifyButton_Click(),无法获取dataset中的表格了,提示没有表格!这是为什么?
要利用DataSet存放Tables集合,然后在每个Button事件中都能用到Tables中的表格,应该如何操作!

解决方案 »

  1.   

    两个按钮不能同时触发。也就是说,第一次提交执行了 Button1_Click()第二次提交 执行了 modifyButton_Click(),而 全局变量(页面级的)的生命周期,只是在一次提交种有效,第二次提交就失效了,必须重新负值。
    放在Session、 applacation、catch、 ViewState 里面可以解决。
      

  2.   

    把同样的
     SqlCommand cmd = new SqlCommand(queryStr, dbConnection);
            dataAdapter.SelectCommand = cmd;
            dataAdapter.Fill(dataset, "users");
            Response.Write(dataset.Tables[0].Rows.Count.ToString());     //返回行数正常放在modifyButton_Click中
      

  3.   

    modifyButton_Click事件触发时,dataset又重新实例化了。
      

  4.   

    ASP.NET中要注意那些公共变量,如果一直需要使用到的
    需要考虑放在session或者viewstate中,否则多用户会间会有冲突.
    你这个,两次触发,dataset清空了
      

  5.   

    同意楼上的,dataset 又是new dataset()了。如果你在Button1_Click事件中初始化dataset的话,再触发modifyButton_Click的话会得到“未将对象引用设置到对象实例”的错误,也是这个原因。
    Session是真正的全局变量,当然你也可以把你的dataset声明成静态的。
      

  6.   

    this.session["dataset "]=dataset ;
      

  7.   

    YES,楼上的都说的没错,可以将DataSet放在SESSION或者VIEWSTATE中
      

  8.   

    public partial class modifyuser : System.Web.UI.Page
    {
        SqlConnection dbConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
        SqlDataAdapter dataAdapter = new SqlDataAdapter();
        DataSet dataset;    protected void Page_Load(object sender, EventArgs e)
        {
               if(!postback)
               {
                      DataSet dataset = new DataSet();
               }
        }
    ....
    试试