标题描述的很抽象,但做过的同学肯定一看就懂。在设计数据库时,男女、有无这类的字段经常不被设为具体的字符串“男”“女”“有”“无”,而是设为01数字或者true和false。但是在用gridview或者 detailView 这类控件绑定数据时就有问题了,总不能也显示0, 1, true, false吧。以下是我自己想的几种解决方法:

1 、三层开发在model层中合理设置get和set,这样做的好处是控件绑定数据后不用处理直接显示就是了,坏处是,当需要01值(比如设置checkbox显示)时还需要再次转换为01

2、用控件的dataBound事件,在表格(gridView和detailView显示时实际上就是表)显示时把要显示的数据转换掉。

 
  
  1. gridView代码示例:
  2.  
  3. if(e.Row.Cells[列的索引].Text=="0")  
  4. {  
  5. e.Row.Cells[列的索引].Text="男";  
  6. }  
  7. else  
  8. {  
  9. e.Row.Cells[列的索引].Text="女";  
  10. }   
  11.  
  12. detailView代码示例: 
  13.  
  14. if (this.DetailsView1.Rows[行的索引].Cells[1].Text == "1"
  15.         { 
  16.             this.DetailsView1.Rows[行的索引].Cells[1].Text = "有"
  17.         } 
  18.         else 
  19.         { 
  20.             this.DetailsView1.Rows[行的索引].Cells[1].Text = "无"
  21.         } 

3、把目标列/字段转换为TemplaField,这时候目标列/字段所在的地方就变成label了,之后编辑模板,编辑dataBindings,Text属性默认绑定的应该是Eval("字段名"),把这里用一个三元运算符,写成类似:Eval("字段名")=="1"?"有":"无",就OK了。