GridView根据值的变化改变行列样式

原创 2005年04月28日 16:54:00

GridView根据值的变化改变行列样式

www.chinacs.net  2005-03-18  中文C#技术站

  我看到论坛中有询问关于如何在GridView随某行某列值的改变时(这些值是空的或不是空的或是其它某些值等),其背景色及文本颜色也随之改变。这篇文章便论述这个问题。

  根据某列的值改变其样式最好的方法是在GridView的DataRowBound事件中想办法。在GridView中的行绑定数据后将立即执行DataRowBound事件。DataRowBound事件使用GridViewRowEventargs类作为事件变量。通过事件变量你能够利用GridViewRowEventArgs属性操作已经绑定数据的行。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 GridViewRow row = e.Row;
}

  Row将返回TableRow类中的一个GridViewRow对象。

  绑定的Row有几种不同的类型。例如:DataRow, EmptyDataRow, Footer, Header, Pager 和 Separator。通过GridView的RowType属性可以得到当前行的行类型。RowType是一组DataControlRow枚举。

  看下面的代码示例,检测GridView列出的行是否为一个标准类型的行。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  //Do something!
 }
}

  可以使用Row的Cells属性得到其Cells,它将返回一个TableCellCollection对象。然后通过TableCellCollection索引得到特定的Cells。TableCellcollection索引将返回一个TabelCell对象,对应于Row中的一个Cell:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  string value = e.Row.Cells[0].Text;
 }
}

  现在你已经明白了如何得到GridView中某行某列的值,那么根据值的变化改变其样式就比较容易了。以下示例使用 Northwind 数据库,通过检测第四列(UnitPrice)的值是否大于10将其颜色改变为红色。

<%@ Page Language="C#"%>
<%@ Import Namespace="System.Drawing" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  if (Decimal.Parse(e.Row.Cells[3].Text) > 10)
   e.Row.Cells[3].BackColor = Color.Red;
 }
}

</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:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False"
DataKeyNames="ProductID" OnRowDataBound="GridView1_RowDataBound">
  <Columns>
   <asp:BoundField ReadOnly="True" HeaderText="ProductID" InsertVisible="False" DataField="ProductID"
SortExpression="ProductID" />
   <asp:BoundField HeaderText="ProductName" DataField="ProductName" SortExpression="ProductName" />
   <asp:BoundField HeaderText="QuantityPerUnit" DataField="QuantityPerUnit" SortExpression="QuantityPerUnit" />
   <asp:BoundField HeaderText="UnitPrice" DataField="UnitPrice" SortExpression="UnitPrice" />
  </Columns>
 </asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT [ProductID], [ProductName], [QuantityPerUnit], [UnitPrice] FROM [Alphabetical list of products]"

ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>" />

</div>
</form>
</body>
</html>

>>原作者:APS编绎   >>来源:天极网

ActivityGroup 实现分页和自定义标签(内有GridView的点击背景样式的改变方法)

我这里实现的是方法和这个帖子的主要差别的就是界面都是自定义的。这样可以实现很多美观的分页,新浪微博等的效果一样可以达到。上效果图如下: 可以看到下方的就是标签界面了,这是一个GridVIew。很多人...

黑马学习笔记——如何改变gridview中gridline的样式(颜色等)!

gridview是 asp.net2.0的新控件,在vs2005中可以选取自动套用格式来确定他的风格,但是发现他的girdline(网格线)属性,只能设置在什么方向存在(没有,横,纵,横纵都有),而不...

ListView嵌套GridView 并实现行列选择

  • 2015年07月11日 10:24
  • 2.49MB
  • 下载

[MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等

前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都...

ListView+GridView实现行列不确定的表格

ListView+GridView实现行列不确定的表格 请尊重个人劳动成果,转载注明出处,谢谢! http://blog.csdn.net/xiaxiazaizai01 第一次写博客,内心还...

NPOI开源组件(操作Execl)创建Workbook和Sheet,创建单元格,设置行列样式等

using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; //创建Execl IWorkbook hssfworkbook =new HSS...

两个关联的GridView,点击其中一个,另一个的状态发生变化,联动操作

最近做了个练习,为某个用户设置标签,标签页下方是可供选择的所有标签,上方是选中的标签,点击所有标签中的一项,上方列表显示相应的选项,点击上方列表中的一项,删除该项,下方所有标签列表中的该项呈未选中状态...

Android UI控件之Gallery +GridView实现图片与小圆点同步变化

在Web应用中有这样一种需求,特别是在一些购物网站中。经常会看到会有一些动态循环        展示的一组图片。Android可不可以实现这种效果呢?答案当然是肯定的了。             ...
  • kiritor
  • kiritor
  • 2013年03月23日 15:37
  • 3207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GridView根据值的变化改变行列样式
举报原因:
原因补充:

(最多只允许输入30个字)