快速业务通道

ASP.NET 2.0数据教程之三十:格式化DataList和Repeater的数据

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
price quote”.我们将在ASP.NET page的 code-behind class 里创建这些功能,并给它们取名为 DisplayProductNameAndDiscontinuedStatus 和DisplayPrice.这两个方法都需要 返回HTML,而且为了在ASP.NET page的声明语法里调用,都需要标记为Protected (or Public).下面是这两个方法的代码:

C#

protected string DisplayProductNameAndDiscontinuedStatus(string productName, bool discontinued)
{
// Return just the productName if discontinued is false
if (!discontinued)
return productName;
else
// otherwise, return the productName appended with the text "[DISCONTINUED]"
return string.Concat(productName, " [DISCONTINUED]");
}
protected string DisplayPrice(Northwind.ProductsRow product)
{
// If price is less than $20.00, return the price, highlighted
if (!product.IsUnitPriceNull() && product.UnitPrice < 20)
return string.Concat("<span class=\"AffordablePriceEmphasis\">",
product.UnitPrice.ToString("C"), "</span>");
else
// Otherwise return the text, "Please call for a price quote"
return "<span>Please call for a price quote</span>";
}

注意到DisplayProductNameAndDiscontinuedStatus 方法接收 productName 和discontinued 的值.而DisplayPrice 方法接收ProductsRow (而 不是UnitPrice).如果格式化功能处理可能包含数据库空值(比如UnitPrice,而 ProductName和Discontinued都不允许空)的量值,要特别小心处理.

输入的 值可能是一个DBNull而不是你期望的数据类型,因此输入参数的类型必须为 Object.而且比如检查传进来的值是否为database NULL.也就是说,如果我们想让 DisplayPrice 方法以价格为参数,我们需要以下代 码:

C#

protected string DisplayPrice(object unitPrice)
{
// If price is less than $20.00, return the price, highlighted
if (!Convert.IsDBNull(unitPrice) && ((decimal) unitPrice) < 20)
return string.Concat("<span class=\"AffordablePriceEmphasis\">",
((decimal) unitPrice).ToString("C"), "</span>");
else
// Otherwise return the text, "Please call for a price quote"
return "<span>Please call for a price quote</span>";
}

注意输入参数UnitPrice的类 型为Object,条件判断语句被修改为判断unitPrice 是否为DBNull.而且,由于 UnitPrice是作为Object传进来的,所以必须要类型转换为decimal.

第二步 : 在DataList的ItemTemplate调用格式化方法

在完成以上代码后,剩下的 工作就是在DataList的ItemTemplate里调用这些格式化功能.我们需要使用以下代 码:

ASP.NET

<%# MethodName(inputParameter1, inputParameter2, ...) %>

在DataList的ItemTemplate 里,ProductNameLabel Label通过指定text属性为<%# Eval ("ProductName") %>显示的product的name.为了在需要的情况下加 上“[DISCONTINUED]” ,修改代码,使用 DisplayProductNameAndDiscontinuedStatus 方法来指定text属性.我们需要使用 Eval("columnName") 语法来将product的name和discontinued的值传 进去.Eval 返回的值为Object类型,而 DisplayProductNameAndDiscontinuedStatus 的参数为String 和Boolean.因此, 我们需要将Eval 方法返回的值转换为需要的参数类型,代码如 下:

ASP.NET

<h4>
<asp:Labe

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号