格式化GridView 数字0和1转换为男女 及更复杂的处理

很多情况下在绑定数据的时候,要进行格式转换。如果只有两种状态,比如说在数据库用0表示为男1表示为女,那在数据显示的时候,我们不可能让用户看到的是0和1,他们看到0和1也不明白是什么情况。所以,要进行格式转换。

先以 男女为示例。

使用三远运算符进行转换:

1 <asp:TemplateField HeaderText="性别">
2      <ItemTemplate>             
        <%# Eval("UserGender").ToString()=="0"?"男":"女" %>

3      </ItemTemplate>

4</asp:TemplateField>

 

 我们也可以在后台写代码进行处理:

前台:

1 <asp:TemplateField HeaderText="性别">
2      <ItemTemplate>
3         <%# FormatGenderData(Eval("UserGender").ToString())%>             
4      </ItemTemplate>
5 </asp:TemplateField>

 

后台:

1   protected string FormatGenderData(string sex)
2     {
3         string[] arrs = new string[] { """" };
4         return arrs[Convert.ToInt16(sex)].ToString();
5     }

 

请大家注意下,为什么使用 protected 来定义,如果使用private,HTML是访问不到这个方法的,因为private是私有的。也可以定义为public,在这就定义成protected。

还有大家可能会有疑问,为什么我们不使用if else或者switch case等语句来实现呢,虽然是可行的,但是大家有没有想到,那样写,使代码复杂化,我们可以变通下,把需要输出的字符串使用字符串数组顺序来存放,使用索引号来取相应的字符串,这样代码就非常简洁。 

 我们的方法接受的是字符串型参数,Eval()方法返回的是object类型。所以我们需要使用ToString()把数据转化为字符串型。

如果状态比较多的情况下,比如0 1 2 3 4 也可以使用此方法。

posted @ 2010-06-25 14:24  TC-MrLee  阅读(808)  评论(0编辑  收藏  举报