none
新手求教DataGridView 的DataGridViewCheckBoxColumn的问题 RRS feed

  • 问题

  • 我winform 画面上放了个DataGridView(dgTest),绑定了一个DataSet(dsSet), 

    dgTest中有一列checkboxDS, 对应dsSet中的checkboxDS, checkboxDS类型已经设置成bool行了。 但是为什么哪到的值一直是空?

    其他列不是bool的值都是可以取到的,bool类型的该怎么取?

    我是这么取的

    var test = dsSet.Table[0].Rows[0].Cells["checkboxDS"].Value;

    2014年4月2日 3:28

答案

  • 你好:

    你确定你的代码没有问题,不会出现编译问题吗?

    从DataSet中没有Table这个集合,只有Tables,DataRow中也没有Cells集合,智能通过索引来获取其中某一列的值。你的这行代码根本都没有办法编译。

    正确的方法应该是这样的:

    //从DataSet中取值
                var valueFromDataSet = Convert.ToBoolean(ds.Tables[0].Rows[2]["checkboxDS"]);
                MessageBox.Show(valueFromDataSet.ToString());
    
                //从DataGridView中取值
                var valueFromDGV = Convert.ToBoolean(this.dataGridView1["checkboxDS", 2].Value);
                MessageBox.Show(valueFromDGV.ToString());

    我把完整的从数据库中获取DataSet,然后绑定DataGridView,最后通过点击按钮获取CheckBox列值的示例代码贴出来供你参考。绑定DataSet到DataGridView会自动创建一列CheckBoxColumn列:

    DataSet ds = new DataSet();
    
            private void Form1_Load(object sender, EventArgs e)
            {
                string connStr="server=localhost;uid=sa;password=password;database=db_test;";
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("select * from t_users", conn))
                    {
                        
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        adapter.Fill(ds);
    
                        //绑定DataSet作为DataGridView的数据源
                        this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
                    }
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //从DataSet中取值
                var valueFromDataSet = Convert.ToBoolean(ds.Tables[0].Rows[2]["IsValid"]);
                MessageBox.Show(valueFromDataSet.ToString());
    
                //从DataGridView中取值
                var valueFromDGV = Convert.ToBoolean(this.dataGridView1["IsValid", 2].Value);
                MessageBox.Show(valueFromDGV.ToString());
            }


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年4月3日 2:26
    版主

全部回复

  • 有高手回答一下吗
    2014年4月2日 5:25
  • 你好:

    你确定你的代码没有问题,不会出现编译问题吗?

    从DataSet中没有Table这个集合,只有Tables,DataRow中也没有Cells集合,智能通过索引来获取其中某一列的值。你的这行代码根本都没有办法编译。

    正确的方法应该是这样的:

    //从DataSet中取值
                var valueFromDataSet = Convert.ToBoolean(ds.Tables[0].Rows[2]["checkboxDS"]);
                MessageBox.Show(valueFromDataSet.ToString());
    
                //从DataGridView中取值
                var valueFromDGV = Convert.ToBoolean(this.dataGridView1["checkboxDS", 2].Value);
                MessageBox.Show(valueFromDGV.ToString());

    我把完整的从数据库中获取DataSet,然后绑定DataGridView,最后通过点击按钮获取CheckBox列值的示例代码贴出来供你参考。绑定DataSet到DataGridView会自动创建一列CheckBoxColumn列:

    DataSet ds = new DataSet();
    
            private void Form1_Load(object sender, EventArgs e)
            {
                string connStr="server=localhost;uid=sa;password=password;database=db_test;";
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("select * from t_users", conn))
                    {
                        
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        adapter.Fill(ds);
    
                        //绑定DataSet作为DataGridView的数据源
                        this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
                    }
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //从DataSet中取值
                var valueFromDataSet = Convert.ToBoolean(ds.Tables[0].Rows[2]["IsValid"]);
                MessageBox.Show(valueFromDataSet.ToString());
    
                //从DataGridView中取值
                var valueFromDGV = Convert.ToBoolean(this.dataGridView1["IsValid", 2].Value);
                MessageBox.Show(valueFromDGV.ToString());
            }


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年4月3日 2:26
    版主