日期:2014-05-18  浏览次数:20776 次

dataGridView 显示问题
select a.type as 证件类型  
from table1 a table2 b where 1=1";

dataGridView1.DataSource = ds.Tables[0].DefaultView; 

查询table1表结果显示在dataGridView1 
字段type存储的是1、2、3、4、5、6、7、8、9,显示在dataGridView1上时1为身份证,2为学生证,3为军官证,4为绿卡 等等 

用case 可以实现, 还有别的办法吗


------解决方案--------------------
遍历dataset 把该列的值替换成文字就可以了 然后再绑定
------解决方案--------------------
C# code

        private void dvg_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (dgvUser.Columns[e.ColumnIndex].Name.Equals("IntroState"))
            {
                foreach (DataGridViewRow dgv in dgvUser.Rows)
                {
                    switch (e.Value.ToString())
                    {
                        case "0":
                            e.Value = "未填写";
                            e.CellStyle.BackColor = Color.Yellow;
                            break;
                        case "1":
                            e.Value = "待审核";
                            e.CellStyle.BackColor = Color.Red;
                            break;
                        case "2":
                            e.Value = "已通过";
                            e.CellStyle.BackColor = Color.Green;
                            break;
                        default:
                            break;
                    }
                }
            }
        }

------解决方案--------------------
up
------解决方案--------------------
ls的也行,但是起始用sql是不是更直接一点呢~
------解决方案--------------------
建议type字段使用DatagridViewComboBox
datasource可以是一个键值对.或是枚举(没试过枚举 请参考http://msdn.microsoft.com/zh-cn/library/y0wfd4yz.aspx)
valuemember就是数值
displaymember就是文字
DataPropertyName就是字段名.
------解决方案--------------------
点击控件 右上角有个箭头 点一下 里面有个编辑列 在里面选取你所需要的 编辑HeadText 就行了
------解决方案--------------------
推荐5楼的做法
------解决方案--------------------
支持下楼主
------解决方案--------------------
1.sql中case when可以搞
2.遍历取回来的datatable,修改其中的值也可以.

------解决方案--------------------
直接sql中case when多省事.
------解决方案--------------------
绘制单元格时都会发生CellFormatting事件的。
string stringValue = (string)e.Value;
获取了这个Value,进行简单的字符串处理就可以去掉空格

------解决方案--------------------
CellFormatting是个事件。。。可以+=一下~
------解决方案--------------------
去空格。。。.前后的话。。。Trim()?