• 获取GridView TemplateField的数据


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

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

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

    网页运行效果:

    源代码,

    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:

    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:

    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);
        }
    }
  • 相关阅读:
    软件/环境的注册码
    js图片延迟加载如何实现
    http状态码
    关于深拷贝(含数组对象)
    javascript继承方式详解
    使用寄生构造函数 创建类
    前端知识点大全【转载】
    统一addEventListener与attachEvent中this指向问题
    sublime text全程指南【转载】
    函数防抖与节流[转载]
  • 原文地址:https://www.cnblogs.com/insus/p/2737483.html
Copyright © 2020-2023  润新知