积极答复者
datagridview控件中包含checkbox列的问题

问题
-
在winForm中,用datagridview控件,现在要加一个类似于checkbox的列,它里面有一个DataGridViewCheckBoxColumn,我添加了,也在网上找了一些,但是为什么我这里一直不可以选择,
我用下面这样的来设置默认值,但是没有效果
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
//row.Cells[0].value = true;
}
还有一个问题就是,现在如果要获取选中了几行,这个事件要怎么写,在网上看用dCellContentClick事件
我现在要做的功能是把选中的行主键取出来,然后去数据库里面查,把数据显示在另外一个datagridview上,
i当取消选中的时候,就把相应的数据从datagridview上移除掉
我现在是用一个list<T>来放选中的数据,然后用List.Add
和List.Remove来添加和移除数据,
crazyBasketball- 已移动 Sheng Jiang 蒋晟Moderator 2009年12月16日 20:07 System.Windows.Forms (发件人:Visual C#)
答案
-
关于你的第一个问题。我试了,可以的
你是不是把DataGridViewCheckBoxColumn列的readonly设为了true;
string str = "server=.;database=TQ_SysManage;uid=sa;pwd=1234";
private void button3_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(str);
con.Open();
SqlCommand cmd = new SqlCommand("select * from sys_userinfo",con);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
this.dataGridView1.DataSource=ds.Tables[0];//for (int i = 0; i < dataGridView1.Rows.Count; i++)
//{
// this.dataGridView1.Rows[i].Cells[0].Value = true;
//}
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
row.Cells[0].Value = true;
}
}
努力+方法=成功- 已标记为答案 YiChun Chen 2009年12月17日 10:25
-
关于你的第二个问题,你可以在
单击CHEKCBOX时,如果chckbox处于选中状态就向list添加
如果chekbox处于未选中状态,就从list移除
List<string> lt=new List<string>();
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//第一列为checkbox
if(e.ColumnIndex==0)
{
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() == "True")
{
lt.Add(this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
}
else
{
lt.Remove(this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
}
}
}
努力+方法=成功- 已标记为答案 YiChun Chen 2009年12月17日 10:25
全部回复
-
关于你的第一个问题。我试了,可以的
你是不是把DataGridViewCheckBoxColumn列的readonly设为了true;
string str = "server=.;database=TQ_SysManage;uid=sa;pwd=1234";
private void button3_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(str);
con.Open();
SqlCommand cmd = new SqlCommand("select * from sys_userinfo",con);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
this.dataGridView1.DataSource=ds.Tables[0];//for (int i = 0; i < dataGridView1.Rows.Count; i++)
//{
// this.dataGridView1.Rows[i].Cells[0].Value = true;
//}
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
row.Cells[0].Value = true;
}
}
努力+方法=成功- 已标记为答案 YiChun Chen 2009年12月17日 10:25
-
关于你的第二个问题,你可以在
单击CHEKCBOX时,如果chckbox处于选中状态就向list添加
如果chekbox处于未选中状态,就从list移除
List<string> lt=new List<string>();
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//第一列为checkbox
if(e.ColumnIndex==0)
{
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() == "True")
{
lt.Add(this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
}
else
{
lt.Remove(this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
}
}
}
努力+方法=成功- 已标记为答案 YiChun Chen 2009年12月17日 10:25