为了账号安全,请及时绑定邮箱和手机立即绑定

两个dropDownList和一个GridView的选择与显示

标签:
JavaScript

很久没有写ASP.NET了,今天有看到论坛上一个问题:
"两个dropDownList和一个GridView,已经进行了数据绑定,现在想让第一个下拉菜单的数据改变时,第二个下拉菜单自动变到相应的数据,同时选中gridview中相对应的行,不知道如何实现,很急,求大神相助"



其实,实现起来算得上简单,下面先从准备数据开始,创建一个对象Customer:


source code:

using System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summary description for Customer/// </summary>namespace Insus.NET{    public class Customer    {        private int _CustomerID;        private string _CustomerName;        private string _PID;        private bool _IsActived;        public int CustomerID        {            get { return _CustomerID; }            set { _CustomerID = value; }        }        public string CustomerName        {            get { return _CustomerName; }            set { _CustomerName = value; }        }        public string PID        {            get { return _PID; }            set { _PID = value; }        }        public bool IsActived        {            get { return _IsActived; }            set { _IsActived = value; }        }    }}

View Code


接下来,我们创建一个实具,数据来源全在此类实现 CustomerEntity:

 

source code:

using System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>/// Summary description for CustomerEntity/// </summary>namespace Insus.NET{    public class CustomerEntity    {        public CustomerEntity()        {            //            // TODO: Add constructor logic here            //        }        public IEnumerable<Customer> Customers = new List<Customer> {            new Customer {CustomerID = 9,CustomerName = "张三",PID = "123456789012"  },            new Customer {CustomerID = 10,CustomerName = "李四",PID = "321245677812"  },            new Customer {CustomerID = 30,CustomerName = "吴广",PID = "213445678912"  },            new Customer {CustomerID = 35,CustomerName = "王维",PID = "334456789012"  },            new Customer {CustomerID = 36,CustomerName = "赵勇",PID = "213445678912"  }        };        public IEnumerable<Customer> GetForFirstDropDownData()        {            var oo = Customers.Select(o => new Customer { CustomerID = o.CustomerID, CustomerName = o.CustomerName });            return oo;        }        public IEnumerable<Customer> GetForSecondDropDownData(int customerId)        {            var oo = Customers.Select(o => new Customer { CustomerID = o.CustomerID, PID = o.PID })                                .Where(w => w.CustomerID == customerId);            return oo;        }        public IEnumerable<Customer> GetForGridview(int customerId)        {            List<Customer> _cust = new List<Customer>();            foreach (Customer c in Customers)            {                if (c.CustomerID == customerId)                    _cust.Add(new Customer { CustomerID = c.CustomerID, CustomerName = c.CustomerName, PID = c.PID, IsActived = true });                else                    _cust.Add(c);            }            return _cust;        }    }}

View Code


Ok,数据准备好了,下面就可以创建网页实现相关的功能xxx.aspx:


source code:

<%@ 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:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"                AutoPostBack="true">            </asp:DropDownList>&nbsp;&nbsp;&nbsp;&nbsp;        <asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">                <Columns>                    <asp:TemplateField HeaderText="CustomerID">                        <ItemTemplate>                            <%# Eval("CustomerID") %>                        </ItemTemplate>                    </asp:TemplateField>                    <asp:TemplateField HeaderText="CustomerName">                        <ItemTemplate>                            <%# Eval("CustomerName") %>                        </ItemTemplate>                    </asp:TemplateField>                    <asp:TemplateField HeaderText="PID">                        <ItemTemplate>                            <%# Eval("PID") %>                        </ItemTemplate>                    </asp:TemplateField>                </Columns>            </asp:GridView>        </div>    </form></body></html>

View Code


xxx.aspx.cs:

 

source code:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Insus.NET;using System.Data;public partial class _Default : System.Web.UI.Page{    CustomerEntity ce = new CustomerEntity();    protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            Data_Binding();        }    }    private void Data_Binding()    {        this.DropDownList1.DataSource = ce.GetForFirstDropDownData();        this.DropDownList1.DataValueField = "CustomerID";        this.DropDownList1.DataTextField = "CustomerName";        this.DropDownList1.DataBind();        this.DropDownList2.DataSource = ce.GetForSecondDropDownData(Convert.ToInt32(this.DropDownList1.SelectedItem.Value));        this.DropDownList2.DataTextField = "PID";        this.DropDownList2.DataBind();        this.GridView1.DataSource = ce.GetForGridview(Convert.ToInt32(this.DropDownList1.SelectedItem.Value));        this.GridView1.DataBind();    }    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)    {        var ddl = (DropDownList)sender;        this.DropDownList2.DataSource = ce.GetForSecondDropDownData(Convert.ToInt32(ddl.SelectedItem.Value));        this.DropDownList2.DataTextField = "PID";        this.DropDownList2.DataBind();        this.GridView1.DataSource = ce.GetForGridview(Convert.ToInt32(ddl.SelectedItem.Value));        this.GridView1.DataBind();    }    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)    {        if (e.Row.RowType != DataControlRowType.DataRow) return;        Customer drv = (Customer)e.Row.DataItem;        bool isActived = (bool)drv.IsActived;        if (isActived)            e.Row.BackColor = System.Drawing.Color.Red;    }}

View Code


动画实时演示:

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消