C#的datagrid中添加复选框的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#的datagrid中添加复选框的问题相关的知识,希望对你有一定的参考价值。

我有一个表table1;然后比如说有4个字段,name,apple,orange,banana;
然后我想用datagrid显示出来。
就是name字段显示为文本,然后apple,orange,banana显示为复选框。
如果数据库是0,则复选框不选中,如果是1,则选中。
大意就是这样。
我的设想是要这样的:
请问,我要怎么写。
就是写一个方法,比如congvert(dataset ds)
然后让这个方法返回格式经过整理的dataset ds。
然后再把这个ds和datagrid进行绑定。
请问我要在congvert(dataset ds)这个方法里怎么写。
谢谢!
apple,orange,banana是int类型。
这是一个作业,就是要用datagrid读出数据库的数据,然后表示成我描述的那样。
感觉方法很多,但是我只想知道怎么用我的方法写。
怎么在aspx页面定义一个datagrid然后在aspx.cs文件中进行处理,使之显示成我描述的那样。
拜托了。。

private void Form1_Load(object sender, EventArgs e)

DataGridViewTextBoxColumn name1 = new DataGridViewTextBoxColumn();
name1.Name = "name"; name1.HeaderText = "name";
dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn []name1);
//加第一个字段
DataGridViewCheckBoxColumn apple=new DataGridViewCheckBoxColumn ();
apple.Name = "apple"; apple.HeaderText = "apple";
dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
apple);//加第二个。
DataGridViewCheckBoxColumn orange = new DataGridViewCheckBoxColumn();
orange.Name = "orange"; orange.HeaderText = "orange";
dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
orange);//加第三个。
DataGridViewCheckBoxColumn banana = new DataGridViewCheckBoxColumn();
banana.Name = "banana"; banana.HeaderText = "banana";
dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
banana);//加第四个。

string con = "server=192.160.1.88;database=MYLX;uid=ss;pwd=123";
SqlConnection conn = new SqlConnection(con);//数据库连接

string sql = "select name,apple,orange,banana from table1";
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();//数据读取
sda.Fill(ds);//填充

ds = convert(ds);//调用方法

dataGridView1.Columns[0].DataPropertyName = "name";//数据绑定
dataGridView1.Columns[1].DataPropertyName = "apple";//数据绑定
dataGridView1.Columns[2].DataPropertyName = "orange";//数据绑定
dataGridView1.Columns[3].DataPropertyName = "banana";//数据绑定
dataGridView1.DataSource = ds.Tables[0].DefaultView;//数据绑定



DataSet convert(DataSet ds)

int col = ds.Tables[0].Columns.Count;//获取行
int row = ds.Tables[0].Rows.Count;//获取列
//dataGridView1 中的checkbox只接受bool类型的值的所以这里面要转换一下!
for (int j = 0; j < row; j++)

for (int i = 1; i < col; i++)

//把为1的写写true
if (ds.Tables[0].Rows[j][i].ToString ().Trim () == "1")

ds.Tables[0].Rows[j][i] = "true";

//把不为1的写成false
else

ds.Tables[0].Rows[j][i]="false";



return ds;
参考技术A 如果 apple,orange,banana在数据库中是bit类型那么到界面上自动会转成复选框并且自动会显示选中与否,不需要写你那个convert的方法
如果是其他类型那么就要看情况来定了

public DataTable convert(DataSet ds)

DataTable targetData = new DataTable();
//构造一个和你数据库一样的DataTable把你 apple等列改成布尔类型
targetData.Columns.Add(...)
...
targetData.Columns.Add("apple");
targetData.Columns["apple"].DataType = TypeCode.Boolean;

foreach(DataRow sourceRow in ds.Tables[0].Rows)

DataRow targetNewRow = targetData.NewRow();
.... //将原数据添加到目标DataTable中
....
boolean apple = sourceRow["apple"].ToString()=="1"?true:false;
targetData["apple"] = apple;
....
....
targetData.Rows.Add(targetNewRow);

return targetData;
参考技术B 判断一下呗,
foreach(Row row int ds.tables[0].Rows)

if(int.parse(row["apple"])==1)

foreach (GridViewRow item in gridview.Rows)

(CheckBox)item.FindControl("checkbox1").checked=true;



参考技术C 可以使用datagrid的编辑功能,里面可以选用datagrid的combox、textbox功能

以上是关于C#的datagrid中添加复选框的问题的主要内容,如果未能解决你的问题,请参考以下文章

c# wpf datagrid中选择所有复选框的代码

bootstrap fuelux datagrid表头怎么添加checkbox多选框

求教一个easyui的问题 datagrid中怎么加复选框

排序时复选框在 WPF Datagrid 中重置

如何把WinForms中DataGrid的第一列放上复选框,可以多项选择???急!

c# datagridview主要方法