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>




  • 相关阅读:
    【原】error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string'
    【原】开发路上疑难BUG调试记录
    【转】XCode: duplicate symbol 解决方案
    【原】就IOS发布app时如何保护文本资源的一个方法
    【原】xcode5.0升级5.1遇到的clang: error: unknown argument: '-fobj-arc'错误
    【转】生产者与消费者
    安卓快速排序与冒泡排序
    数据结构之算法时间复杂度
    常见数据结构与算法整理总结(上)
    Activity的onPause()、onStop()和onDestroy()里要做的事情
  • 原文地址:https://www.cnblogs.com/scottckt/p/1789076.html
Copyright © 2011-2022 走看看