zoukankan      html  css  js  c++  java
  • 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<stringstring> StateList { getset; }
         
    protected void Page_Load(object sender, EventArgs e)
            {
                    StateList 
    = new Dictionary<stringstring>();
                    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>




  • 相关阅读:
    2017ccpc全国邀请赛(湖南湘潭) E. Partial Sum
    Codeforces Round #412 C. Success Rate (rated, Div. 2, base on VK Cup 2017 Round 3)
    2017 中国大学生程序设计竞赛 女生专场 Building Shops (hdu6024)
    51nod 1084 矩阵取数问题 V2
    Power收集
    红色的幻想乡
    Koishi Loves Segments
    Wood Processing
    整数对
    Room and Moor
  • 原文地址:https://www.cnblogs.com/scottckt/p/1789076.html
Copyright © 2011-2022 走看看