asp.net中怎样将GridView绑定数据库中bit型的数据显示成男和女而不是True和False??

解决方案 »

  1.   

    gridview绑定布尔值显示标题描述的很抽象,但做过的同学肯定一看就懂。在设计数据库时,男女、有无这类的字段经常不被设为具体的字符串“男”“女”“有”“无”,而是设为01数字或者true和false。但是在用gridview或者 detailView 这类控件绑定数据时就有问题了,总不能也显示0, 1, true, false吧。以下是我自己想的几种解决方法:1 、三层开发在model层中合理设置get和set,这样做的好处是控件绑定数据后不用处理直接显示就是了,坏处是,当需要01值(比如设置checkbox显示)时还需要再次转换为012、用控件的dataBound事件,在表格(gridView和detailView显示时实际上就是表)显示时把要显示的数据转换掉gridView代码示例:if(e.Row.Cells[列的索引].Text=="0") 

    e.Row.Cells[列的索引].Text="男"; 

    else 

    e.Row.Cells[列的索引].Text="女"; 
    }  detailView代码示例:if (this.DetailsView1.Rows[行的索引].Cells[1].Text == "1")
            {
                this.DetailsView1.Rows[行的索引].Cells[1].Text = "有";
            }
            else
            {
                this.DetailsView1.Rows[行的索引].Cells[1].Text = "无";
            }3、把目标列/字段转换为TemplaField,这时候目标列/字段所在的地方就变成label了,之后编辑模板,编辑dataBindings,Text属性默认绑定的应该是Eval("字段名"),把这里用一个三元运算符,写成类似:Eval("字段名")=="1"?"有":"无",就OK了
     
      

  2.   

    从三层来讲  这个最好放在MODEL层来处理如果木有三层  可以直接在WEB前台来实现 :<%#Eval("Sex")=="0"?"男":女%>
      

  3.   

    三层开发还没用过,不会用,第一种方法行不通;我在gridview里找到databand事件,但是没有出现你所说的情况,我在rowdataband事件里写,可以,但是不能把string 转换成int类型。第三种,我没有找到databanging,不会设置,你能否具体的告诉我吗?
      

  4.   

    <%# Convert.ToBoolean(Eval("Sex")) ==true?"男":"女"%>
      

  5.   

    在哪里写啊?我声明的字段是boundfiled类型的
      

  6.   


    第三种你会了就行了。在界面声明上写一个转换表达式,甚至调用后台转换函数,这种方式不就扯到GridViewXX啊、Container啊、FindControl啊的代码,注意力集中,在你的所有类似需求中都是最为恰当的代码,以后就写这种代码来随时维护界面定义就行了。