我在
Page_Load
{
if(!IsPostBack)
{
ds=MyData.SelectData(tempSql,tempTable);//将数据库里的数据符值给DataSet,具体代码在下面
}
MyDataGrid.DataSource = ds.Tables["admin"].DefaultView;
MyDataGrid.AllowPaging = true;
MyDataGrid.DataBind();
}
DataGrid到是邦定了
但是在后面的Butt_add_Click方法里面却无法使用ds为什么啊,ds.Tables[0]是空public DataSet SelectData(string Sql,string TableName)
{
da = new SqlDataAdapter(Sql,MyConn);
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
SqlCmdBld = new SqlCommandBuilder(da);
ds.Clear();
da.Fill(ds,TableName);
return ds;
}

解决方案 »

  1.   

    将ds定义为public static DataSet ds看看
      

  2.   

    ds 是在public class LoginForm : System.Web.UI.Page
    下面定义的
    ds=MyData.SelectData(tempSql,tempTable);放在if(!IsPostBack){}外面的话
    却是可以正常使用
    但每次点一下bttton都会重新执行这条语句
      

  3.   

    我今天也碰到了一个基本一样的问题,经过自己研究,在代码模块无论如何声明都不行,应该使用页面缓存Session。
      

  4.   

    定义为public static不行啊
    难到每完成一个数据操功能都要重新执行
    ds=MyData.SelectData(tempSql,tempTable);
      

  5.   

    ebbtiger(爱财) 能不能说的清楚一些啊
      

  6.   

    好像
    每当点一个button
    页面将会被重新提交一次
    所有的数据将会丢失
    由于if(!IsPostBack){}原因
    所以当点了button以后
    没有执行ds=MyData.SelectData(tempSql,tempTable);
    那么ds当然为空啊
    不过怎么解决呢???
      

  7.   

    他会说你.没有定义对象.当你点Button时.
    并没有执行
    ds=MyData.SelectData(tempSql,tempTable);//这个..因为ispost只有页面第一加载的时候才会执行
      

  8.   

    数据不大的情况下,可考虑定义一个属性,将DATASET缓存起来吧.private DataSet YourDataSet
    {
        set{ViewState["yourdataset"] = value;}
        get{return (DataSet)ViewState["yourdataset"];}
    }
      

  9.   

    你把DS存入SESSION然后在什么地方用都行。但是不推荐使用,因为DS大的时候太占内存
      

  10.   

    楼主为什么不在Butt_add_Click方法里再绑定一次?那不就解决了吗
      

  11.   

    一般用法是在Session或ViewState中存储。如果数据量太大或者服务器内存紧张的话,就在butt_add_click事件中重新取一下数据。我习惯将绑定数据的的代码写入一个函数,比如override public void DataBind();
    或自定义一个GetData().然后在需要用到数据的时候调用一下。
    用Session还是重新读,取决于你的需求和数据的大小。
      

  12.   

    Page_Load
    {
    if(!IsPostBack)
    {
    ds=MyData.SelectData(tempSql,tempTable);//将数据库里的数据符值给DataSet,具体代码在下面
    }
    MyDataGrid.DataSource = ds.Tables["admin"].DefaultView;
    MyDataGrid.AllowPaging = true;
    MyDataGrid.DataBind();
    }
    在ds=MyData.SelectData(tempSql,tempTable);//将数据库里的数据符值给DataSet,具体代码在下面加
    cache("ds")=ds
    将MyDataGrid.DataSource = ds.Tables["admin"].DefaultView;
    中的ds改为cache("ds")
      

  13.   

    我也用的是Session先在 if 里 Session["xxx"]=ds;再在if 外面 ds=(DataSet)Session["xxx"]===============================
        CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
    软件!
        界面: http://qqwwee.com/
        下载: http://qqwwee.com/csdn.rar 包含源代码
      

  14.   

    将ds=MyData.SelectData(tempSql,tempTable);放在!IsPostBack外面就可以了.
      

  15.   

    数据不大的情况下,可考虑定义一个属性,将DATASET缓存起来吧.private DataSet YourDataSet
    {
        set{ViewState["yourdataset"] = value;}
        get{return (DataSet)ViewState["yourdataset"];}
    }
    这个试过好像不行啊
      

  16.   

    我对数据库的更新是调用的一个方法public void UpdateData(DataSet ChangeDataSet,string TableName)
    {
    da.Update(ChangeDataSet,TableName);
    }这个方法不在本页面里面定义的,是在另一个类文件里定的
    还是提示引用对象为空
      

  17.   

    要不用session,要不重新绑定,只有这两条路。