• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之十一:基于数据的自定义格式化

在ASP.NET 2.0中操作数据之十一:基于数据的自定义格式化

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了自定义控件 asp.net,自定义表单 asp.net,asp.net,asp net培训,asp和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

介绍

  我们可以通过控制HeaderStyle, RowStyle, AlternatingRowStyle和其他一些属性来改变GridView, DetailsView, 和 FormView的样式,比如cssClass, Font, BorderWidth, BorderStyle, Bar, Width, Height等

  一般,自定义格式化与我们所要显示的数据的值有关系。例如, 为了吸引用户注意那些库存为空的产品,我们可以将库存对应的字段UnitsInStock  和UnitsOnOrder为0的数据背景色设为黄色. 为了高亮化那些贵的产品,则将UnitsInStock  高于$75.00的数据字体设置为粗体

  GridView, DetailsView, FormView的格式自定义可以有多种方法, 在本文中我们将用DataBound 和 RowDataBound两种事件来完成, 在下一篇里我们将尝试用alternative的方式 在GridView控件中使用TemplateField

  使用DetailsView 控件的 DataBound 事件当绑定数据到DetailsView控件, 不管是从数据控件或编码填充数据到DataSource属性并调用其DataBind()方法。以下几种事件将触发

1.DataBinding事件触发

2.数据绑定到数据绑定控件

3.DataBound事件触发

  一般在1,2,3之后数据将会通过事件立即填充数据控件,我们还可以自定义事件处理来确定数据是否已经被填充到控件中并按照我们的需要调整显示格式。我们可以来做个例子.我们将创建一个DetailsView来列出一个产品的一般信息,并且当UnitPrice超过 $75.00 时用粗体,italic字体来显示UnitPrice的值

Step 1: 在DetailsView中显示产品信息

  在CustomFormatting文件夹下新建一个CustomColors.aspx页面,从工具箱中拖出一个DetailsView控件到页面中,设置ID为ExpensiveProductsPriceInBoldItalic绑定到一个新的数据源中,并配置此数据源到业务对象ProductsBLL类中的GetProducts()方法,这个的详细实现步骤已经在前面详细介绍过了,这里就忽略了

  当您绑定ObjectDataSource到DetailsView时,我们可以修改一下字段列表,我选择移除了ProductID, SupplierID, CategoryID, UnitsInStock, UnitsOnOrder, ReorderLevel和那些不被绑定的字段,他们将不会显示在DetailsView列表中,而那些留下来的我们可以重命名他们,还可以修改他们的显示格式. 我还清空了DetailsView的Height和Width属性,这样当显示的只有一条数据时不会出现样式的混乱。当然我们面对的数据绝不只有一条这么少,显示怎么办呢?我们可以检查DetailsView的智能感知中检查Enable Paging checkbox是否被勾选上, 这样我们可以分页查看所有的数据了

http://files.weikejianghu.com/file_images/article/201605/2016050609292413.png

图1: 在DetailsView的值能感知中检查Enable Paging属性是否被勾选上

 在经过这些改变后, DetailsView的代码更改为

<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False" DataKeyNames="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="False">

 <Fields>

 <asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName"

/>

 <asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True"

SortExpression="CategoryName" />

 <asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True"

SortExpression="SupplierName" />

 <asp:BoundField DataField="QuantityPerUnit" HeaderText="Qty/Unit"

SortExpression="QuantityPerUnit" />

 <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price"

  HtmlEncode="False" SortExpression="UnitPrice" />

 </Fields>

</asp:DetailsView>
</div>

您这时可以按F5执行看看

http://files.weikejianghu.com/file_images/article/201605/2016050609292414.png

图2: DetailsView控件一次显示一个数据

Step 2: 在DataBound事件中编码确定数据的值

  为了将那些UnitPrice高于$75.00的产品用粗体,italic字体显示出来,我们首先需要编码确定UnitPrice的值,对于DetailsView我们可以通过DataBound事件完成. 我们选择DetailsView并查看属性视图(F4位快捷键), 如果没有显示,则选择 View(视图)Property Window(属性窗口), 在确保您选择了DetailsView的情况下双击DataBound事件或者输入您要创建的事件名

http://files.weikejianghu.com/file_images/article/201605/2016050609292815.png

图3: 为DataBound事件创建一个事件处理

代码中将会自动生成以下代码

protected void ExpensiveProductsPriceInBoldItalic_DataBound(object sender, EventArgs e)
{

}
</div>

  我们可以通过DataItem属性来设置DetailsView的绑定项(一些强类型的数据行(DataRow)组成的强类型的数据表(DataTable)), 当数据表(DataTable)绑定到DetailsView时,数据表的第一行将被自动绑定到DetailsView的DataItem属性,而DataItem属性中包含有DataRowView (Object类型),我们可以通过DataRowView来访问一个ProductsRow 的DataRow实例,还可以检测Object的值来确定ProductsRow实例是否存在

下面的代码描述如何确定UnitPrice是否绑定到DetailsView并且高于$75.00

protected void ExpensiveProductsPriceInBoldItalic_DataBound(object sender, EventArgs e)

{

 // Get the ProductsRow object from the DataItem property...

 Northwind.ProductsRow product = (Northwind.ProductsRow)((System.Data.DataRowView)

ExpensiveProductsPriceInBoldItalic.DataItem).Row;

 if (!product.IsUnitPriceNull() && product.UnitPrice > 75m)

 {

 // TODO: Make the UnitPrice text bold and italic

 }

}
</div>

注意: 当UnitPrice在数据库的值为空,我们在绑定到ProductsRow's UnitPrice属性之前检查确定他是否为空,这很重要因为我们可以通过检查这个属性来抛出一个强类型的异常 StrongTypingException exception.

Step 3: 在DetailsView中格式化 UnitPrice

  到这个时候我们已经知道即将绑定的UnitPrice是否高于$75.00,现在我们来看看怎么通过编码调整UnitPrice的格式,我们可以通过修改DetailsViewID.Rows[index];修改一行数据,而且我们可以通过访问DetailsViewID.Rows[index].Cells[index]来访问某一单元格,这样我们可以通过修改与格式相关的属性来格式化这一单元格

  访问某一行需要得到某行的索引,索引从0开始, UnitPrice 在 DetailsView中是第15行, 假设他在第四行那么我们可以通过ExpensiveProductsPriceInBoldItalic.Rows[4]来访问. 这时我们可以通过下面的代码将这一行显示为粗体,italic 字体

ExpensiveProductsPriceInBoldItalic.Rows[4].Font.Bold = true;

ExpensiveProductsPriceInBoldItalic.Rows[4].Font.Italic = true;
</div>

然而,这样将会格式化Label和值,如果我们只想将值格式话,而且我们需要将格式应用到当前行的第二格,请看下面的代码

ExpensiveProductsPriceInBoldItalic.Rows[4].Cells[1].Font.Bold = true;

ExpensiveProductsPriceInBoldItalic.Rows[4].Cells[1].Font.Italic = true;
</div>

  

我们还可以通过StyleSheet 来显示标记和样式相关信息,而不是用确定的某一行某一列来设置格式,我们用CSS来控制格式,打开Styles.css 文件,添加一个新的Class命名为ExpensivePriceEmphasis按照下面的代码CSS

.ExpensivePriceEmphasis

{

 font-weight: bold;

 font-style: italic;

}
</div>

然后再DataBound事件中,设置单元的CssClass为ExpensivePriceEmphasis,在DataBound事件处理中添加

当查看Chai(费用低于$75.00),价格将会用正常格式显示 图4),但是当查看Mishi Kobe Niku,(价格为$97.00)则会用我们设置的格式显示(图5)

http://files.weikejianghu.com/file_images/article/201605/2016050609292816.png

图4: 价格低于$75.00将会用正常格式显示

http://files.weikejianghu.com/file_images/article/201605/2016050609292817.png

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • asp.net webform自定义分页控件
  • asp.net DataTable导出Excel自定义列名的方法
  • Asp.net自定义控件之单选、多选控件
  • Asp.net自定义控件之加载层
  • 在ASP.NET 2.0中操作数据之二十六:排序自定义分页数据
  • 在ASP.NET 2.0中操作数据之十一:基于数据的自定义格式化
  • ASP.NET预定义模板介绍
  • ASP.NET中保护自定义的服务器控件
  • ASP.NET通过自定义函数实现对字符串的大小写切换功能
  • asp.net自定义控件中注册Javascript问题解决方案

相关文章

  • 2017-05-11iis配置asp.net常见问题解决方案
  • 2017-05-11asp.net下生成99个不同的随机数
  • 2017-05-11asp.net 上传或下载当文件名包含有特殊字符"#"的处理
  • 2017-05-11ASP.NET中根据XML动态创建使用WEB组件
  • 2017-05-11asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
  • 2017-05-11ASP.NET中利用Segments取得URL的文件名的一种方法分享
  • 2017-05-11asp.net 无刷新分页实例代码
  • 2017-05-11析构函数的作用 什么是析构函数
  • 2017-05-11C# SetCursorPos简介及使用说明
  • 2017-05-11gridview checkbox从服务器端和客户端两个方面实现全选和反选

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何合并多个 .NET 程序集
    • 在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件
    • 获取根目录的URL例如http://localhost:51898
    • ASP.NET返回上一页面的实现代码
    • CSRF在ASP.NET Core中的处理方法详解
    • Live Write 的代码高亮插件 Paste Code
    • 查看Json输出的*最方便*的方法 (转)
    • 进度条在.net导入Excel时的应用实例
    • asp.net5中用户认证与授权(2)
    • .net core xss攻击防御的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有