转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET 2.0中Gridview控件高级技巧         ★★★★

ASP.NET 2.0中Gridview控件高级技巧

作者:闵涛 文章来源:闵涛的学习笔记 点击数:828 更新时间:2009/4/23 10:33:33
  ASP.NET 2.0中,新增加的gridview控件的确十分强大,弥补了在asp.net 1.1中,使用datagrid控件时的不足之处。因为在asp.net 1.1中,在使用datagrid时,很多情况下依然要编写大量的代码,十分不方便,而且有时需要很多技巧。而在asp.net 2.0中,很多情况下,使用gridview控件的话,甚至只需要拖拉控件,设置属性就可以了,不需要编写任何代码。在《使用ASP.NET 2.0中的GridView控件》和《ASP.NET2.0中用Gridview控件操作数据》中,已经对gridview控件做了一系列介绍,如果之前没有了解过gridview的读者,请先阅读这两篇文章。在本文中,将继续深入介绍gridview的一些使用技巧。

  一 格式化gridview

  和asp.net 1.1一样,gridview可以很方便地定制其样式,比如css,颜色等。要定制gridview的格式,十分简单,只需要鼠标右击gridview,在弹出的菜单中选择"AUTO FORMAT",则可以选择gridview的样式,内置了许多样式,如下图:


  如果你要对gridview中每一列自定义格式,则只需要点击gridview右上角的"smart tag"智能标记,在弹出的菜单中,选择"edit columns",会弹出如下图的窗体,这样就可以对每列进行详细的设置了:
  

  比如,如果要某一列设置为特殊格式,如要将unitprice设置为货币格式,可以在unitprice列的DataFormatString属性中设置为{0:C},程序代码如下:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
 <form id="form1" runat="server">
 <div>
  <asp:SqlDataSource ID="productsDataSource"
    Runat="server"
    SelectCommand="SELECT [ProductID], [ProductName],
    [QuantityPerUnit], [UnitPrice], [UnitsInStock] FROM
    [Products]"
    ConnectionString="<%$ ConnectionStrings:NWConnectionString %>"
     DataSourceMode="DataReader">
  </asp:SqlDataSource>
  <asp:GridView ID="productGridView" Runat="server"
     DataSourceID="productsDataSource"
     DataKeyNames="ProductID" AutoGenerateColumns="False"
     BorderWidth="1px" BackColor="#DEBA84"
     CellPadding="3" CellSpacing="2" BorderStyle="None"
     BorderColor="#DEBA84">
  <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
  <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle>
  <HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#A55129"></HeaderStyle>
  <Columns>
  <asp:BoundField ReadOnly="True" HeaderText="ID" InsertVisible="False" DataField="ProductID"
SortExpression="ProductID">
  <ItemStyle HorizontalAlign="Center"></ItemStyle>
 </asp:BoundField>
 <asp:BoundField HeaderText="Name" DataField="ProductName" SortExpression="ProductName">
 </asp:BoundField>
 <asp:BoundField HeaderText="Qty/Unit"
    DataField="QuantityPerUnit"
    SortExpression="QuantityPerUnit"></asp:BoundField>
 <asp:BoundField HeaderText="Price/Unit"
    DataField="UnitPrice" SortExpression="UnitPrice"
    DataFormatString="{0:c}">
   <ItemStyle HorizontalAlign="Right"></ItemStyle>
 </asp:BoundField>
 <asp:BoundField HeaderText="Units In Stock" DataField="UnitsInStock"
    SortExpression="UnitsInStock"
    DataFormatString="{0:d}">
  <ItemStyle HorizontalAlign="Right"></ItemStyle>
 </asp:BoundField>
</Columns>
<SelectedRowStyle ForeColor="White" Font-Bold="True"
  BackColor="#738A9C"></SelectedRowStyle>
  <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle>
  </asp:GridView>
 </div>
 </form>
</body>
</html>
  程序运行后结果如下:


  而有的时候,我们可能要根据需要,对gridview中的数据进行特殊的显示,比如当某样商品库存为0时,要求gridview中以不同颜色进行显示,这时,可以按如下的方法进行:

  首先,gridview提供了rowdatabound事件,该事件在gridview中每行被创建并且绑定到datasource控件后被触发,因此,我们可以利用该事件去检查库存是否为0,如果为0的话,将所在行的北京颜色设置为黄色,代码如下:

public void productsGridView_RowDataBound(object sender,
GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  int unitsInStock = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "UnitsInStock"));
  if (unitsInStock == 0)
   e.Row.BackColor = Color.Yellow;
 }
}
  首先,该事件首先检查,当前的行是否属于datarow类型的行,因为象gridview中的headerrow,footerrow等行,并不包含实际的数据,因此,我们不需要使用headerrow和footerrow,而为了取得库存unitesinstock的内容,通过使用databinder.eval的方法取出其内容,并转换为int类型,接着判断是否为0,如果为0的话,则设置其行的背景颜色为黄色。程序运行结果如下图所示:



[Web开发]彻底放弃IIS让Apache也支持ASP.NET  [Web开发]ASP.NET 2.0发送电子邮件中存在的问题
[Web开发]ASP.NET 2.0移动开发之属性重写和模板化  [Web开发]ASP.NET 2.0中实现模板中的数据绑定
[Web开发]ASP.NET 母版页概述  [Web开发]ASP.NET 2.0 ObjectDataSource控件
[Web开发]ASP.NET 页面对象模型  [Web开发]Asp.net 中服务端控件事件是如何触发的
[Web开发]ASP.NET Web Service如何工作(3)  [Web开发]ASP.NET Web Service如何工作(2)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台