[ASP.NET 2.0]关于GridView的一些操作

时间: 2008-04-22 / 分类: 学习心得 / 浏览次数: 5,713 / 0个评论 发表评论

今天晚上解决了几个GridView的几个问题,一个是关于显示项目中有HTML编码的问题,还有就是日期格式化显示的问题。其实这都是基本的小问题,但是之前从来没有接触到过,而且现在很多ASP.NET 2.0的书籍其实都是欺世盗名,只不过是披了ASP.NET 2.0的外衣,里面讲解的一些控件完全是1.0里面就有的东西,使用起来的时候翻了一本本的参考书都无从下手。

也许我们大陆的学者基本上都是只能够搞些学术造假之流,没有人能潜心做学问的。翻翻现在市面上的各种技术书籍,不是什么工作室从网上集体剽窃的东西,就是有些人完全不顾事实胡乱编凑一些东西来欺骗读者,总之完全是为了经济利益而出书,而不是为了技术进步和帮助别人。幸好我们还能找到一些国外或者境外的好书。英文书籍本来是很好的,但是翻译成中文立马就变成了垃圾,就那样的翻译水平,完全是驴唇不对马嘴!看英文书虽然并不费力,但是不能一眼得到自己想要找到的内容,看起来颇费时间,于是我在网上大家的介绍中找到了一本由台湾地区微软MVP“圣殿祭司”(奚江华)写的一本好书:《ASP.NET 2.0开发详解–使用C#》,里面讲解技术清晰透彻,实例简单明了,也许是我见过最好的一本参考书了。

从网上找到一些解决日期格式化显示的方法,分享一下,希望不要侵权。

—————————–分割线————————————–

在使用Asp.net的过程中,我们经常需要对时间日期进行转换,达到不同的显示效果。默认格式为:2006-6-6 14:33:34,如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢?

  这里将要用到:DateTime.ToString的方法(String,IFormatProvider)

  示例:

  using System;
using System.Globalization;
String format=D;
DateTime date=DataTime.Now;
Response.Write(date.ToString(format,DateTimeFormatInfo.InvariantInfo));

  结果输出

  Thursday, June 16, 2006

  在这里列出了参数format格式详细用法

  =======================

  格式字符 关联属性/说明

  d ShortDatePattern

  D LongDatePattern

  f 完整日期和时间(长日期和短时间)

  F FullDateTimePattern(长日期和长时间)

  g 常规(短日期和短时间)

  G 常规(短日期和长时间)

  m、M MonthDayPattern

  r、R RFC1123Pattern

  s 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)

  t ShortTimePattern

  T LongTimePattern

  u UniversalSortableDateTimePattern 用于显示通用时间的格式

  U 使用通用时间的完整日期和时间(长日期和长时间)

  y、Y YearMonthPattern

  下表列出了可被合并以构造自定义模式的模式

  ========================================

  这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。

  格式模式 说明 :

  d 月中的某一天。一位数的日期没有前导零。

  dd 月中的某一天。一位数的日期有一个前导零。

  ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。

  dddd 周中某天的完整名称,在 DayNames 中定义。

  M 月份数字。一位数的月份没有前导零。

  MM 月份数字。一位数的月份有一个前导零。

  MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。

  MMMM 月份的完整名称,在 MonthNames 中定义。

  y 不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。

  yy 不包含纪元的年份。如果不包含纪元的年份小于10,则显示具有前导零的年份。

  yyyy 包括纪元的四位数的年份。

  gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。

  h 12小时制的小时。一位数的小时数没有前导零。

  hh 12小时制的小时。一位数的小时数有前导零。

  H 24小时制的小时。一位数的小时数没有前导零。

  HH 24小时制的小时。一位数的小时数有前导零。

  m 分钟。一位数的分钟数没有前导零。

  mm 分钟。一位数的分钟数有一个前导零。

  s 秒。一位数的秒数没有前导零。

  ss 秒。一位数的秒数有一个前导零。

  f 秒的小数精度为一位。其余数字被截断。

  ff 秒的小数精度为两位。其余数字被截断。

  fff 秒的小数精度为三位。其余数字被截断。

  ffff 秒的小数精度为四位。其余数字被截断。

  fffff 秒的小数精度为五位。其余数字被截断。

  ffffff 秒的小数精度为六位。其余数字被截断。

  fffffff 秒的小数精度为七位。其余数字被截断。

  t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。

  tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。

  z 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。

  zz 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。

  zzz 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。

  : 在 TimeSeparator 中定义的默认时间分隔符。

  / 在 DateSeparator 中定义的默认日期分隔符。

  % c 其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。

   c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“”。

  只有上面第二个表中列出的格式模式才能用于创建自定义模式;在第一个表中列出的标准格式字符不能用于创建自定义模式。自定义模式的长度至少为两个字符;例如,

  DateTime.ToString( d) 返回 DateTime 值;“d”是标准短日期模式。

  DateTime.ToString( %d) 返回月中的某天;“%d”是自定义模式。

  DateTime.ToString( d ) 返回后面跟有一个空白字符的月中的某天;“d”是自定义模式。

  比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式

  如要得到2005年06月 这样格式的时间

  可以这样写:

date.ToString(yyyy年MM月, DateTimeFormatInfo.InvariantInfo)

  如此类推.

  下面列出一些Asp.net中具体的日期格式化用法:

  ============================================

  1.绑定时格式化日期方法:

<ASP:BOUNDCOLUMN DATAFIELD= JoinTime DATAFORMATSTRING={0:yyyy-MM-dd} > 
<ITEMSTYLE WIDTH= 18% > </ITEMSTYLE> 
</ASP:BOUNDCOLUMN >

  2.数据控件如DataGrid/DataList等的件格式化日期方法:

e.Item.Cell[0].Text =Convert.ToDateTime(e.Item.Cell[0].Text).ToShortDateString();

  3.用String类转换日期显示格式:

String.Format( yyyy-MM-dd ,yourDateTime);

  4.用Convert方法转换日期显示格式:

Convert.ToDateTime(2005-8-23).ToString
(yyMMdd,System.Globalization.DateTimeFormatInfo.InvariantInfo);//支持繁体数据库

  5.直接用ToString方法转换日期显示格式:

DateTime.Now.ToString(yyyyMMddhhmmss);
DateTime.Now.ToString(yyyy/MM/dd hh:mm:ss)

  6.只显示年月

DataBinder.Eval(Container.DataItem,starttime,{0:yyyy-M})

  7.显示时间所有部分,包括:年月日时分秒

<asp:BoundColumn DataField=收款时间 HeaderText=收款时间 
DataFormatString={0:yyyy-MM-dd HH24:mm:ss}> 
</asp:BoundColumn>

  [ASP.NET] 如何在GridView中使用DataFromatString

  在我们从业务逻辑层获得数据实体时候,接下来的事情就是要绑定到控件中。数据实体中的一些字段可以直接绑定到界面中,但是有一些字段需要重新格式化格式。比如货币单位字段,需要显示货币符号和每隔三位显示分隔符;再比如日期字段,数据库中存放的是日期和时间,但是在界面上需要按照XXXX年XX月XX日的格式显示。这时候我们就用到了DataFormatString属性。

<asp:GridView ID=grvResult runat=server AutoGenerateColumns=False Width=100%>
   <Columns>
       <asp:BoundField HeaderText=预定日期 DataField=OperationDate DataFormatString={0:yyyy-MM-dd} HtmlEncode=False>
       </asp:BoundField>      
       <asp:BoundField HeaderText=订单总计 DataField=TotalRate DataFormatString={0:C} HtmlEncode=False>
       </asp:BoundField>
   </Columns>
</asp:GridView>

  例如上面的代码展示了日期和货币两种绑定方式。DataFormatString中的{0}是固定的格式,这和String.Fromat(“{0}”,someString)中的{0}是一个用法,表示绑定上下文的参数索引编号。然后,在后面加入格式化字符串,具体的使用方法可以参考MSDN。

  这里需要注意以下几点

  1.在GridView中的asp:BoundField使用DataFormatString必须设置属性HtmlEncode=False,否则不起作用。

  2.如果需要使用日期类型的格式化字符串,必须数据实体中对应的字段也应该日起类型的。

  3.格式化字符串C代表货币单位,需要绑定的数据类型应该是数字类型的。如果是字符串类型的不起作用,需要手动添加格式化字符串为DataFormatString=¥{0:C}。

历史上的今天

2016年:看电影037(45条评论)

2014年:路易大叔(71条评论)

2012年:快乐星期天202期:幽默语录(39)(87条评论)

2010年:Wiz(为知个人知识管理)正式版发布(64条评论)

2009年:5 Minute Candles,5分钟的浪漫(0条评论)

2009年:使用Outwit搜索网上的文档表格幻灯片和图片[译文51](0条评论)

2009年:5个不用注册即可使用的文件分享网站[译文50](0条评论)

2007年:济南话,你饶了我吧(0条评论)

2006年:鬱悶,有點感冒...(0条评论)

2006年:记录一下昨天的体测(0条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站