获取GridView TemplateField的数据

此博文是教你怎样去获取GridView TemplateField的数据。GridView TemplateField如下写法,没有其它附加控件如Label或Literal等显示字段值

< asp:TemplateField  HeaderText ="Price" >
      < ItemTemplate >
            <% Eval ( " Price " %>
      </ ItemTemplate >
</ asp:TemplateField >

 

要求是Price低于1000元的显示绿色,大于等于1000元以及小于等2000元的显示蓝色,大于2000元显示红色。

网页运行效果:

 

源代码,

ExpandedBlockStart.gif Monitors.cs
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;
        }
    }
}

 

Default.aspx:

ExpandedBlockStart.gif Default.aspx
<% @ 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 >

 

Default.aspx.cs:

ExpandedBlockStart.gif Default.aspx.cs
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);
    }
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值