此博文是教你怎样去获取GridView TemplateField的数据。GridView TemplateField如下写法,没有其它附加控件如Label或Literal等显示字段值。
<
asp:TemplateField
HeaderText
="Price"
>
< ItemTemplate >
<% # Eval ( " Price " ) %>
</ ItemTemplate >
</ asp:TemplateField >
< ItemTemplate >
<% # Eval ( " Price " ) %>
</ ItemTemplate >
</ asp:TemplateField >
要求是Price低于1000元的显示绿色,大于等于1000元以及小于等2000元的显示蓝色,大于2000元显示红色。
网页运行效果:
源代码,
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for Monitors
/// </summary>
namespace Insus.NET
{
public class Monitors
{
private string _Brand;
private string _Model;
private decimal _Price;
public string Brand
{
get { return _Brand; }
set { _Brand = value; }
}
public string Model
{
get { return _Model; }
set { _Model = value; }
}
public decimal Price
{
get { return _Price; }
set { _Price = value; }
}
public Monitors( string brand, string model, decimal price)
{
this._Brand = brand;
this._Model = model;
this._Price = price;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for Monitors
/// </summary>
namespace Insus.NET
{
public class Monitors
{
private string _Brand;
private string _Model;
private decimal _Price;
public string Brand
{
get { return _Brand; }
set { _Brand = value; }
}
public string Model
{
get { return _Model; }
set { _Model = value; }
}
public decimal Price
{
get { return _Price; }
set { _Price = value; }
}
public Monitors( string brand, string model, decimal price)
{
this._Brand = brand;
this._Model = model;
this._Price = price;
}
}
}
Default.aspx:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Default.aspx.cs
"
Inherits
=
"
_Default
"
%>
<! DOCTYPE html >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:GridView ID ="GridViewMonitor" runat ="server" AutoGenerateColumns ="false" Width ="35%" OnRowDataBound ="GridViewMonitor_RowDataBound" >
< Columns >
< asp:TemplateField HeaderText ="Brand" >
< ItemTemplate >
<% # Eval ( " Brand " ) %>
</ ItemTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="Model" >
< ItemTemplate >
<% # Eval ( " Model " ) %>
</ ItemTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="Price" >
< ItemTemplate >
<% # Eval ( " Price " ) %>
</ ItemTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >
</ div >
</ form >
</ body >
</ html >
<! DOCTYPE html >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:GridView ID ="GridViewMonitor" runat ="server" AutoGenerateColumns ="false" Width ="35%" OnRowDataBound ="GridViewMonitor_RowDataBound" >
< Columns >
< asp:TemplateField HeaderText ="Brand" >
< ItemTemplate >
<% # Eval ( " Brand " ) %>
</ ItemTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="Model" >
< ItemTemplate >
<% # Eval ( " Model " ) %>
</ ItemTemplate >
</ asp:TemplateField >
< asp:TemplateField HeaderText ="Price" >
< ItemTemplate >
<% # Eval ( " Price " ) %>
</ ItemTemplate >
</ asp:TemplateField >
</ Columns >
</ asp:GridView >
</ div >
</ form >
</ body >
</ html >
Default.aspx.cs:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
if (!IsPostBack)
Data_Binding();
}
private void Data_Binding()
{
List<Monitors> m = new List<Monitors>();
m.Add( new Monitors( " 三星 ", " S19A330BW ", 859m));
m.Add( new Monitors( " AOC ", " e2343F ", 1020m));
m.Add( new Monitors( " 戴尔 ", " U2412M ", 2070m));
m.Add( new Monitors( " 飞利浦 ", " 227E3QPHSU/93 ", 1099m));
m.Add( new Monitors( " 苹果 ", " MC007 ", 8600m));
m.Add( new Monitors( " LG ", " E2242C-BN ", 899m));
m.Add( new Monitors( " 明基 ", " VW2420H ", 1699m));
m.Add( new Monitors( " 优派 ", " VX2370S-LED ", 1190m));
this.GridViewMonitor.DataSource = m;
this.GridViewMonitor.DataBind();
}
protected void GridViewMonitor_RowDataBound( object sender, GridViewRowEventArgs e)
{
// 获取列索引,并存入ViewState
if (e.Row.RowType == DataControlRowType.Header)
for ( int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Text.Replace ( "\r\n","").Trim() == " Price ")
{
ViewState[ " cellIndex "] = i;
break;
}
}
// 如果不是DataRow,将不执行
if (e.Row.RowType != DataControlRowType.DataRow) return;
// 获取行记录的价格
decimal price = Convert.ToDecimal(((Monitors)e.Row.DataItem).Price);
// 默认价格为显示蓝色(大于等于1000或者小于等于2000)
SetForeColor(e, " blue ");
// 价格小于1000显示为绿色
if (price < 1000m)
SetForeColor(e, " green ");
// 价格大于2000显示为红色
if (price > 2000m)
SetForeColor(e, " red ");
}
// 设置价格前景色
private void SetForeColor(GridViewRowEventArgs e, string color)
{
e.Row.Cells[( int)ViewState[ " cellIndex "]].ForeColor = Color.FromName(color);
}
}
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
if (!IsPostBack)
Data_Binding();
}
private void Data_Binding()
{
List<Monitors> m = new List<Monitors>();
m.Add( new Monitors( " 三星 ", " S19A330BW ", 859m));
m.Add( new Monitors( " AOC ", " e2343F ", 1020m));
m.Add( new Monitors( " 戴尔 ", " U2412M ", 2070m));
m.Add( new Monitors( " 飞利浦 ", " 227E3QPHSU/93 ", 1099m));
m.Add( new Monitors( " 苹果 ", " MC007 ", 8600m));
m.Add( new Monitors( " LG ", " E2242C-BN ", 899m));
m.Add( new Monitors( " 明基 ", " VW2420H ", 1699m));
m.Add( new Monitors( " 优派 ", " VX2370S-LED ", 1190m));
this.GridViewMonitor.DataSource = m;
this.GridViewMonitor.DataBind();
}
protected void GridViewMonitor_RowDataBound( object sender, GridViewRowEventArgs e)
{
// 获取列索引,并存入ViewState
if (e.Row.RowType == DataControlRowType.Header)
for ( int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Text.Replace ( "\r\n","").Trim() == " Price ")
{
ViewState[ " cellIndex "] = i;
break;
}
}
// 如果不是DataRow,将不执行
if (e.Row.RowType != DataControlRowType.DataRow) return;
// 获取行记录的价格
decimal price = Convert.ToDecimal(((Monitors)e.Row.DataItem).Price);
// 默认价格为显示蓝色(大于等于1000或者小于等于2000)
SetForeColor(e, " blue ");
// 价格小于1000显示为绿色
if (price < 1000m)
SetForeColor(e, " green ");
// 价格大于2000显示为红色
if (price > 2000m)
SetForeColor(e, " red ");
}
// 设置价格前景色
private void SetForeColor(GridViewRowEventArgs e, string color)
{
e.Row.Cells[( int)ViewState[ " cellIndex "]].ForeColor = Color.FromName(color);
}
}