SqlConnection Conn = new SqlConnection("server=localhost;database=oa;uid=sa;pwd=;");
//返回一个数据表格dt DataSet ds = new DataSet();
SqlDataAdapter dap = new SqlDataAdapter("select * from 项目",Conn);
dap.Fill(ds);
dap.Dispose();
DataGrid1.DataSource=ds;
DataGrid1.DataBind(); 
Conn.Close();
Conn.Dispose();

解决方案 »

  1.   

    ds在每次Page_Load的时候,都会被重新定义,这就是你出错的原因,解决方法:
    把ds保存到ViewState或者Session中,每次DataGrid从ViewState或者Session中获取DataSource:
    既然你已经困惑了一个月 :), 那么你用下面的代码替换你的代码试试:private DataSet ds; //数据源变量声明
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
             ds = (DataSet)ViewState["xm"];
             if (ds == null)
                LoadData(); if(!Page.IsPostBack)
    {
       DataGrid1.DataSource=ds.Tables[0].DefaultView;
       DataGrid1.DataBind(); 
    }

    }private void LoadData()
    {
       SqlConnection ct= new SqlConnection ("server=localhost;database=oa;uid=sa;pwd=;");
       SqlDataAdapter cmd=new SqlDataAdapter();
       cmd.SelectCommand=new SqlCommand("select * from 项目",ct);
       ds=new DataSet();
       cmd.Fill(ds,"项目");       
       ViewState["xm"] = ds;  //保存DataSet到ViewState
    }如果是使用Session,就用Session代替ViewState