C# DataTable中字段類型如何綁定到DataGridViewCheckBoxColumn

bb_chen 2009-09-21 02:38:31
DataTable表中有一列值為"Y"或"N",請問在綁定到DataGridViewCheckBoxColumn時,如何處理?

PS:不能修改DataTable的結構

謝謝!
...全文
524 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之影子 2009-09-21
  • 打赏
  • 举报
回复
晕:11楼已贴出来了.
风之影子 2009-09-21
  • 打赏
  • 举报
回复
            DataTable dt = new DataTable();
dt.Columns.Add("yn");
dt.Rows.Add("y");
dt.Rows.Add("n");
dt.Rows.Add("y");
dt.Rows.Add("y");
dt.Rows.Add("y");
dt.Rows.Add("n");
((DataGridViewCheckBoxColumn)dataGridView1.Columns["你的datagridview中的check列"]).TrueValue = "y";
((DataGridViewCheckBoxColumn)dataGridView1.Columns["你的datagridview中的check列"]).FalseValue = "n";
this.dataGridView1.DataSource = dt;
lzsh0622 2009-09-21
  • 打赏
  • 举报
回复
7楼的方法 在设计界面 设置DataGridViewCheckBoxColumn的属性
this.Column1.TrueValue = "Y";
this.Column1.FalseValue = "N";
用代码:

private void button3_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataColumn aa = new DataColumn("name");
dt.Columns.Add(aa);
dt.Rows.Add("Y");
dt.Rows.Add("N");
dt.Rows.Add("N");
dt.Rows.Add("Y");
((DataGridViewCheckBoxColumn)dataGridView1.Columns[0]).TrueValue = "Y";
((DataGridViewCheckBoxColumn)dataGridView1.Columns[0]).FalseValue = "N";
dataGridView1.DataSource = dt;
}
足球中国 2009-09-21
  • 打赏
  • 举报
回复
case when 比较好。
xzq686 2009-09-21
  • 打赏
  • 举报
回复
winform?网上有直接这么写的..不知道对否..

DataGridViewCheckBoxColumn.TrueValue = "Y"
DataGridViewCheckBoxColumn.FalseValue = "N"
DataGridViewCheckBoxColumn.ThreeState = False

另外我觉得用case直接在SQL中写也比较好
select case a when 'Y' then true when 'N' then false end case as a from table1
周公 2009-09-21
  • 打赏
  • 举报
回复
在查询出来的DataTable中都不能添加自定义列?
这个对数据库又没有影响,难道你想自己为难自己吗?

要不你就用4楼的方法,繁琐一些,代码量大一些,但是也能实现你说的效果。
lzsh0622 2009-09-21
  • 打赏
  • 举报
回复
设置DataGridViewCheckBoxColumn的属性
this.Column1.TrueValue = "Y";
this.Column1.FalseValue = "N";
周公 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bb_chen 的回复:]
引用楼主 bb_chen 的回复:
DataTable表中有一列值為"Y"或"N",請問在綁定到DataGridViewCheckBoxColumn時,如何處理?

PS:不能修改DataTable的結構

謝謝!


也就是說不能在DataTable增加一bool列,在DataGridViewCheckBoxColumn有沒有什麼屬性可以將"Y","N"轉換為bool
[/Quote]
是的。
风之影子 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bb_chen 的回复:]
引用楼主 bb_chen 的回复:
DataTable表中有一列值為"Y"或"N",請問在綁定到DataGridViewCheckBoxColumn時,如何處理?

PS:不能修改DataTable的結構

謝謝!


也就是說不能在DataTable增加一bool列,在DataGridViewCheckBoxColumn有沒有什麼屬性可以將"Y","N"轉換為bool
[/Quote]

你不需要更改原表,更改你检到的内存表就行.
风之影子 2009-09-21
  • 打赏
  • 举报
回复
            DataTable dt = new DataTable();
dt.Columns.Add("checkcolumns", System.Data.SqlDbType.Bit);

for (int count = 0; count < dt.Rows.Count; count++)
{
if (this.dt.Rows[count]["Y与N的例"].ToString() == "Y")
{
dt.Rows[count]["checkcolumns"] = 1;
}
else
{
dt.Rows[count]["checkcolumns"] = 0;
}
}
//在绑定时把你的Y与N例的数据属性改为checkcolumns
this.dataGridView1.DataSource = dt;
this.dataGridView1.AutoGenerateColumns = false;
bb_chen 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhoufoxcn 的回复:]
那就在DataTable中再增加一列,或者干脆直接在查询时用switch case来增加一列,该列字段类型为bit,只有bit类型的字段才能绑定到DataGridViewCheckBoxColumn列上。
[/Quote]

主要是因為我要從其它系統的數據庫中查詢出記錄。該系統中有些表有10幾個字段都是Char類型,值為"Y","N",在界面都是顯示DataGridViewCheckBoxColumn的,如果在select 中用switch case的話感覺很不方便。所以就想在DataGridViewCheckBoxColumn中處理
bb_chen 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 bb_chen 的回复:]
DataTable表中有一列值為"Y"或"N",請問在綁定到DataGridViewCheckBoxColumn時,如何處理?

PS:不能修改DataTable的結構

謝謝!
[/Quote]

也就是說不能在DataTable增加一bool列,在DataGridViewCheckBoxColumn有沒有什麼屬性可以將"Y","N"轉換為bool
周公 2009-09-21
  • 打赏
  • 举报
回复
那就在DataTable中再增加一列,或者干脆直接在查询时用switch case来增加一列,该列字段类型为bit,只有bit类型的字段才能绑定到DataGridViewCheckBoxColumn列上。

111,107

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧