格式化GridView 数字0和1转换为男女 及更复杂的处理
很多情况下在绑定数据的时候,要进行格式转换。如果只有两种状态,比如说在数据库用0表示为男1表示为女,那在数据显示的时候,我们不可能让用户看到的是0和1,他们看到0和1也不明白是什么情况。所以,要进行格式转换。
先以 男女为示例。
使用三远运算符进行转换:
1 <asp:TemplateField HeaderText="性别">
2 <ItemTemplate>
<%# Eval("UserGender").ToString()=="0"?"男":"女" %>
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>
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 }
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 也可以使用此方法。
作者:Mr S.R Lee
出处:http://www.cnblogs.com/LeeYongze
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.