我做了一个子窗体Form2,需要在每次该窗口打开时显示数据库表中存有的数据,用DataGrid控件,但打开窗体时dataGrid为灰色,不显示数据库中的数据,是怎么回事??
代码如下:
private void Form2_Load(object sender, System.EventArgs e)
{
Form2 x=new Form2();
if(x.ShowDialog()==DialogResult.OK)
{
RefreshData();
}
   }      private void RefreshData()
{
string sql="select * from  userinfor";
OleDbCommand cmd=new OleDbCommand(sql,this.oleDbConnection1);
OleDbDataAdapter da=new OleDbDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds);
                           this.dataGrid1.DataSource=ds.Tables[0];

}

解决方案 »

  1.   

    dataGrid不是为灰色,而是窗体刚打开时不显示数据。
      

  2.   

    this.dataGrid1.DataSource=ds.Tables[0];
    this.dataGrid1.DataBind();//加上
      

  3.   

    加上后: 
    error CS0117: “System.Windows.Forms.DataGrid”并不包含对“DataBind”的定义
      

  4.   

    this.dataGrid1.DataSource=ds.Tables[0].DefaultView;
    this.dataGrid1.DataBind();
      

  5.   

    你的datagrid在form2,还是在主窗体上
      

  6.   

    在Form2上啊,我在Form2窗体中添加了个oleDbConnection1。
      

  7.   

    如果在form2上,那你的操作就有问题了,你是用的showdialog来进行显示窗体,但是操作数据在showdialog结束之后,你需要把绑定数据的部分放到form2的load事件去做
      

  8.   

    是不是没有数据,试一下这里的实现
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
      

  9.   

    我改了一下代码,
    代码如下:
    private void Form2_Load(object sender, System.EventArgs e)
    {RefreshData();
    }
       
         private void RefreshData()
    {
    string sql="select * from  userinfor";
    OleDbCommand cmd=new OleDbCommand(sql,this.oleDbConnection1);
    OleDbDataAdapter da=new OleDbDataAdapter(cmd);
    DataSet ds=new DataSet();
    da.Fill(ds);
    this.dataGrid1.DataSource=ds.Tables[0];}调试时在da.Fill(ds)处报错,报错信息为:
    未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中。
    是怎么回事??
      

  10.   

    da.Fill(ds);
    this.dataGrid1.DataSource=ds.Tables[0];
    最后2句改下看看:
    da.Fill(ds,"aaa");
    dataGrid1.DataSource=ds;
    dataGrid1.DataMember="aaa";或者把绑定的变成一句:
      dataGrid1.SetDataBinding(ds,"aaa");
      

  11.   

    你的oleDbConnection1是否能正常连接。