con = new SqlConnection("server=localhost;database=stock;uid=sa;pwd=5454");

con.Open();
ada = new SqlDataAdapter("select * from login",con);
ds=new DataSet();
ada.Fill(ds,"login");
this.dataGrid1.DataSource=ds.Tables["login"].ToString();
this.textBox1.DataBindings.Add("Text",ds,"login.name");
this.textBox2.DataBindings.Add("Text",ds,"login.password");
this.checkBox1.DataBindings.Add("Checked",ds,"login.type");
=====================
this.textBox1.DataBindings.Add("Text",ds,"login.name");这句出了错,说“复杂的 DataBinding 接受 IList 或 IListSource 作为数据源”。

解决方案 »

  1.   

    ada = new SqlDataAdapter("select * from login",con);改成:
    ada=new SqlDataAdapter();
    ada.SelectCommand=new SqlCommand("select * from login",con);还有this.dataGrid1.DataSource=ds.Tables["login"].ToString();
    改成:this.dataGrid1.DataSource=ds.Tables["login"];
      

  2.   

    谢谢.请问
    ada=new SqlDataAdapter();
    ada.SelectCommand=new SqlCommand("select * from login",con);

    ada = new SqlDataAdapter("select * from login",con);具体有什么区别呢?
      

  3.   

    你用这个也是可以的,但也必须指明是什么命令,"查询","更新","删除"....即:
    ada = new SqlDataAdapter("select * from login",con);
    ada .SelectCommand=SqlCommand("select * from login");比较起来,当然我写的要简单点啊...
      

  4.   

    至于为什么会有你的这种构造函数,MSDN上是这样解释的:SqlDataAdapter 的这一实现打开和关闭 SqlConnection(如果它尚未打开)。在必须为两个或更多 SqlDataAdapter 对象调用 Fill 方法的应用程序中,它会非常有用。如果 SqlConnection 已打开,则必须显式调用 Close 或 Dispose 以将其关闭。
    具体看下MSDN吧,以SqlDataAdapter为关键字....
      

  5.   

    不好意思,没有看清楚,你的也行,不需要指定SelectCommand,你这样写的这个默认是SelectCommand,差点误导你了.....你的错误应该是这句:
    this.dataGrid1.DataSource=ds.Tables["login"].ToString();
    改成:this.dataGrid1.DataSource=ds.Tables["login"];DataSource应该是"login"表,而不是字符串....