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

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的话,则设置其行的背景颜色为黄色。程序运行结果如下图所示:

时间: 2024-08-01 19:27:36

ASP.NET 2.0中Gridview控件高级技巧的相关文章

ASP.NET 2.0中GridView控件的隐藏列的问题

Asp.net 2.0 GridView隐藏列visible="false" 后你就无法取得这列的值了, 而用datagrid就没有这个问题, MS这个混蛋老是改变游戏规则, 幸好我聪明, 在百度上搜到了别人的解决方法, 然后加入了自己的方法, 才解决问题: protected void GVList_RowDataBound(object sender, GridViewRowEventArgs e) { //隐藏不必要的列 if ((e.Row.RowType == DataCon

ASP.NET 4.0中的控件ID

在.NET 4.0中,当将控件添加到页面或者用户控件,有一个新的选择项:ClientIDMode.此属性为您提供四种选择:Legacy, Static, Predictable, Inherit.在此之前,几乎不可能找到在一个正确的控件的ID.现在在ASP.NET4.0中,选择Legacy将与以前的asp.net版本产生的方式相同,连接每个控件的ID和父容器的名字.设置为Static将生成服务器控件ID属性设置的值.Predictable用于控件的数据绑定,如 repeater控件,而且还要使用

Asp.net 2.0 中获取控件输出的Html代码

asp.net|控件 X将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程   public static string RenderControlAsString(Control ctl)...{   StringWrite sw=new StringWrite();   HtmlTextWrite write=new HtmlTextWrite(sw);   ctl.RenderControl(writer);   s

ASP.NET 2.0中Gridview中数据操作技巧

Asp.net 2.0中新增的gridview控件,是十分强大的数据展示控件,在前面的 系列文章里,分别展示了其中很多的基本用法和技巧(详见<<ASP.NET 2.0中Gridview控件高级技巧>>.<<ASP.NET2.0利用Gridview实现 主从关系>>).在本文中,将继续探讨有关的技巧. 一.Gridview中的内容导出到Excel 在日常工作中,经常要将gridview中的内容导出到excel报表中去,在 asp.net 2.0中,同样可以很方

灵活掌握asp.net中gridview控件的多种使用方法(下)_实用技巧

继续上篇文章的学习<灵活掌握asp.net中gridview控件的多种使用方法(上)>,在此基础上巩固gridview控件的操作使用,更上一层楼. 11.GridView实现用"..."代替超长字符串:效果图:   解决方法:数据绑定后过滤每一行即可 for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { DataRowView mydrv; string gIntro; if (GridView1.PageInde

灵活掌握asp.net中gridview控件的多种使用方法(上)_实用技巧

灵活使用asp.net中gridview控件的方法有很多种,本文内容很富,希望大家都能有所收获. 1.GridView无代码分页排序: 效果图: 小提示: 1.AllowSorting设为True,aspx代码中是AllowSorting="True": 2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12". 3.默认的是单向排序的,右击GridView弹出"属性",选择AllowSort

asp.net中gridview控件中,怎么用c#语言的代码方式实现编辑、删除数据功能

问题描述 asp.net中gridview控件中,怎么用c#语言的代码方式实现编辑.删除数据功能 解决方案 解决方案二:给你一份编辑和删除的底层代码吧,你自己看着对应自己的进行修改编辑:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI

asp.net中根据本机的屏幕分辨率来控制页面中gridview控件的PageSize的值

问题描述 asp.net中根据本机的屏幕分辨率来控制页面中gridview控件的PageSize的值 asp.net中根据本机的屏幕分辨率来控制页面中gridview控件中的PageSize的值,分辨率不同,PageSize的值不同 解决方案 http://zhidao.baidu.com/link?url=7_maszHk6yvjio7PD-aZQPwdpmMY6dN76qgTiEWp8cgGd4G9g_rgiqrdrxiaaKmdSQIG0C7SFx47uKVG5sN9Wa

tabnavigator-flex3.0中TabNavigator控件的选项卡如何显示在左侧?

问题描述 flex3.0中TabNavigator控件的选项卡如何显示在左侧? flex中的TabNavigator标签创建容器,选项卡默认是在顶面, 怎样把选项卡显示到左面? 解决方案 TabNavigator定义ID为tabSth 点击按钮时 : this.tabSth.selectedIndex = 0; 0表示第一个选项卡,1表示第二个 选项卡