oa.CmdString = "select username,userpass from usertable where id=" + uid; 
            dt = oa.SelectCommand().Tables[0];//返回一个DataTable
            textBox2.Text = dt.Rows[0]["username"].ToString();//通过行能够正常显示查询出来的结果
            textBox3.Text = dt.Columns["username"][0].ToString();//通过列就不行了,看样子不应该这样写,应该怎么写呢?

解决方案 »

  1.   

    textBox3.Text = dt.Columns["username"][0].ToString();
    没有这种写法
    dt1.Columns[i].ToString()这个是获取第i列的列名,比如你上面写的username
      

  2.   

    那么通过Column该怎样写怎样取值呢?
      

  3.   

    textBox2.Text = dt.Rows[0]["username"].ToString();
    这个不就可以了吗?只需改变[]内的参数就成了,比如你要"username"列的所有数据:
    foreach(datarows row in dt.rows){
       textBox.text=row["username"].tostring();
    }
    这样就会把username列内的所有内容在textbox中输出一编,当然.这里只能显示最后一个.
      

  4.   

    我估计是楼主有个问题没搞清楚。
    在表中,row才是代表数据的,也就是说数据永远存在于行中
    column是代表数据结构的,告诉我们在一行中某个位置的数据类型是什么
      

  5.   

    DataTable.Columns["列名"].Name
    DataTable.Columns["索引"].Name
    列只有列名,它没有值的,如果要取值的话,是通过行和列就确定啦你要取值的单元格,定位到单元格你就可以.value属性获得你想要的值了,就是你楼主的第一个可以取到值的方式,Column只是一个数据结构,帮你查找单元格和定位单元格的
      

  6.   

                string sqlstr = "select * from TeacherInfo ";
                //                                        取货方法      取货渠道          
                SqlDataAdapter sda = new SqlDataAdapter(sqlstr, sqlHelper.sqlConnection);
                //取货存储
                DataSet ds = new DataSet();
        sda.Fill(ds);
       //货物展示
                this.dataGridView1.AutoGenerateColumns = false;//展示时,不再添加新的列
                //把货绑定到货架上
                this.dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.ReadOnly = true;