说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

.net 2005中通过DataGridView来绑定数据显示,绑定列常遇上的显示编码所对应的名称的问题.

编辑:说三道四文库 发布时间:2018-07-16 03:46
HTML文档下载 WORD文档下载 PDF文档下载
.net 2005中通过DataGridView来绑定数据显示.

其中有一列是性别,在数据库中 0 - 表示男,1 - 表示女,

从数据库中得到的数据事例如下:

用户编码  用户名称  性别
1001      小王      1
1002      杨过      1
1003      黄容      0

把数据绑定到DataGridView后默认显示如下:
1001      小王      1
1002      杨过      1
1003      黄容      0

现在我要它的显示结果为如下:
1001      小王      男
1002      杨过      男
1003      黄容      女

我使用了DataGridView中的DataGridViewComboBoxColumn的列类型.
通过如下形式给该列( 设为:dgvcbcolumn)设置绑定数据源
            DataTable table = new DataTable("tb_sex");
            DataColumn column;
            DataRow row;

            column = new DataColumn();
            column.DataType = System.Type.GetType("System.Int32");
            column.ColumnName = "id";
            table.Columns.Add(column);

            column = new DataColumn();
            column.DataType = System.Type.GetType("System.String");
            column.ColumnName = "name";
            table.Columns.Add(column);

            row = table.NewRow();
            row["id"] = 0;
            row["name"] = "女";
            table.Rows.Add(row);

            row = table.NewRow();
            row["id"] = 1;
            row["name"] = "男";
            table.Rows.Add(row);

            this.dgvcbcolumn.DataSource = table;
            this.dgvcbcolumn.DisplayMember = "name";
            this.dgvcbcolumn.ValueMember = "id";

可以满足我的要求,但用一个致命的问题,如果提取的数据中的性别有空或其它值是,数据绑定到DataGridView就会发生错误.

不知道大家是怎么解决这样的问题的.

这问题也就是常遇上的显示编码所对应的名称的问题.
你在数据库里作处理 
select case 性别字段名 when 1 then '男' else '女' end as Sex from 表
如果只是显示,那么可以在CellFormatting事件中写代码.
楼上的两位;我还要通过绑定的ds修改后再更新数据库

this.DataGridView1.BindingContext[ds.Tables[0].DefaultView, ""].EndCurrentEdit();
if (ds.GetChanges() != null)
{
     dbClass cl = new dbClass();
     cl.updateData(ds.GetChanges);
     ds.AcceptChanges();
}
最简单的,可以设置数据库那个表示性别的字段为not allow null.
至于其它数据如果出现在数据库中,那么只能说明在数据录入的程序中有问题,这样的数据是不应当让它通过程序进入数据库的.
楼上的,你那样是理想的数据,很多时候就存在这种情况.

例如:我用户表里面存在一个叫用户类型的字段,

用户类型字段的值是从参数表里取的,系统运行一段时间后,参数表里的几行记录删除了,

那用户表里的用户类型的值相应的也在参数表里查不到,

这种情况下查询数据绑定后就会出错
GridView中有个NulldisplayText的属性,它是专门用来对付Null值的.
大家谈谈这种情况怎么解决?
你在GridView的rowdatabind事件中,检测性别字段,将e.row.cells[columnindex].text="男/女/空白"
我一般也是数据库处理
先isnull处理一下,再when一下

select case IsNull(性别字段名, '1') when 1 then '男' else '女' end as Sex from 表
老帖子啦,顶一下,大家来谈谈这种问题怎么解决才妥当呢?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘