Gridview中格式化数据的方法

有段时间不用GridView了,有点生疏了。最近用GridView,把GridView中格式化数据的方法总结一下。

一、动态生成列的格式化

  此种GridView中的列是动态生成的,格式化可以通过RowDataBound事件进行。如下边代码,对第十列的值进行格式化。

protected   void  gvUserList_RowDataBound( object  sender, GridViewRowEventArgs e)
{
    
// 格式化代码
     if (e.Row.Cells[ 9 ].Text == ' 1 ' )
    {
            e.Row.Cells[
9 ].Text = " XXX " ;
    }
    
else
    {
        e.Row.Cells[
9 ].Text = " YYY " ;
    }
}


 二、在源码中对已配置好列的格式化

  下边的源码是已配置好列的GridView,将以此为例进行格式化。

代码
  < asp:GridView  ID ="GridView1" runat ="server"  AutoGenerateColumns ="False" >
    
< Columns >
            
< asp:BoundField  DataField ="UserName"  HeaderText ="姓名"   />
        
   < asp:BoundField  DataField ="Sex"  HeaderText ="性别"   />
            
< asp:BoundField  DataField ="State"  HeaderText ="状态"   />
            
< asp:BoundField  DataField ="LoginDateTime"  HeaderText ="最后登录时间"   />
        
</ Columns >
</ asp:GridView >

  此例中需要格式化的地方有:最后登录时间,性别,状态。最后登录时间为日期的格式化;性别是值为两种情况的格式化;状态是值为多种情况的格式化。

格式化方法:

   方法一、使用后台进行格式化,即用动态生成列的格式化方法。

   方法二、直接在源码上进行格式化。

  这里我们重点介绍在源码上进行格式化。

  2.2.1日期格式化

    如上边GridView中的"最后登录时间" 要格式化成"yyyy-MM-dd"的形式。格式的化的方法是用DataformatString。

    例子源码中<asp:BoundField DataField="LoginDateTime" HeaderText="最后登录时间" />的格式化代码如下。

< asp:BoundField  DataField ="LoginDateTime"  HeaderText ="最后登录时间"  DataFormatString ="{0:yyyy-MM-dd HH:mm}"   />

    当然DataFormatString不只是只能格式化日期,也可以格式化货币、数字等,详情请参才MSDN。相关地址如下:

     BoundColumn.DataFormatString 属性介绍:

    http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx

 

   2.2.2 值为两种情况的格式化

     如上边的GridView中的"性别"。性别有男、女两种情况,如果 0为男、1为女,则格式化方法可以用<TemplateField> +数据绑定表达式:<%#数据绑定表达式%> + 三元运算符在解决。
    例子源码中<asp:BoundField DataField="Sex" HeaderText="性别" />的格式化代码如下。     

< asp:TemplateField  HeaderText ="性别" >
                
< ItemTemplate >
                    
<% # Eval ( " Sex " ).ToString().Trim() == " 0 " ? " " : " "   %>
                
</ ItemTemplate >
</ asp:TemplateField >

 

  2.2.3 值为多种情况格式化

     例子中“状态”有多种,其值和显示名称为:1:已登陆;2:未登陆;3:注销;4:删除;另外为其它
       现在要格式化怎么办?显然三元运算符已无法解决这个问题。解决这个问题的方法与上边类似。但是用<TemplateField> +数据绑定表达式:<%#数据绑定表达式%> + 范型属性来解决。
       我们首先在页面的后台代码中定义一个范型的共公属性,此属性用于格式化。并在Page_load中赋值。后台代码为:

     protected   static  Dictionary < string string >  StateList {  get set ; }
     
protected   void  Page_Load( object  sender, EventArgs e)
        {
                StateList 
=   new  Dictionary < string string > ();
                StateList .Add(
" 1 " " 已登陆 " );
                StateList .Add(
" 2 " " 未登陆 " );
                StateList .Add(
" 3 " " 注销 " );
                StateList .Add(
" 4 " " 删除 " );
        }

    细心的朋为会看到只有四个状态值,还有一个状态值“其它”没有看到,这个我们可以在源码中用三元运算符解决。
    例子源码中<asp:BoundField DataField="State" HeaderText="状态" />的格式化代码如下。  

< asp:TemplateField HeaderText = "状态 " >
                
< ItemTemplate >
                    
<% # StateList.ContainsKey(Eval( " State " ).ToString().Trim())  ?  StateList[Eval( " State " ).ToString()] :  " 其它 " %>
                
</ ItemTemplate >
</ asp:TemplateField >




 

 

你可能感兴趣的:(GridView)