<%@ Page Language="C#" AutoEventWireup="true" CodeFile="X200906111015.aspx.cs" Inherits="DropDown_X200906111015" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:FormView ID="FormView1" runat="server" AllowPaging="True" onpageindexchanging="FormView1_PageIndexChanging" DataKeyNames="ProductKey" > <ItemTemplate> ProductKey:<asp:Label ID="fProductKey" Text='<%#Eval("ProductKey")%>' runat="server"></asp:Label> <br /> Name: <asp:Label ID="fProductName" Text='<%#Eval("Name")%>' runat="server"></asp:Label> <br /> ProductClass: <asp:DropDownList ID="fProductClass" runat="server" AutoPostBack="True" OnInit="InitProductClass" OnSelectedIndexChanged="ProductClass_SelectedIndexChanged"> </asp:DropDownList> <br /> ProductSubClass: <asp:DropDownList ID="fProductSubClass" runat="server"> </asp:DropDownList> <br /> </ItemTemplate> </asp:FormView> </div> </form> </body> </html>
-- 后台文件
-------------------------------------------------------------------------------------------------------
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Drawing; /// <summary> /// 标题:FormView DropList 连动简单示例 /// 日期:2009-06-11 /// </summary> public partial class DropDown_X200906111015 : System.Web.UI.Page { private DataTable Product { get { if (Session["Product"] == null) { DataTable fProduct = new DataTable(); fProduct.Columns.Add(new DataColumn("ProductKey", typeof(int))); fProduct.Columns.Add(new DataColumn("ProductClassKey", typeof(int))); fProduct.Columns.Add(new DataColumn("Name", typeof(string))); fProduct.Rows.Add(new object[] { 1, 1, "产品一" }); fProduct.Rows.Add(new object[] { 2, 2, "产品二" }); fProduct.Rows.Add(new object[] { 3, 3, "产品三" }); Session["Product"] = fProduct; } return (DataTable)Session["Product"]; } } private DataTable ProductClass { get { if (Session["ProductClass"] == null) { DataTable fProductClass = new DataTable(); fProductClass.Columns.Add(new DataColumn("ProductClassKey", typeof(int))); fProductClass.Columns.Add(new DataColumn("Name", typeof(string))); fProductClass.Rows.Add(new object[] { 1, "能源" }); fProductClass.Rows.Add(new object[] { 2, "办公" }); fProductClass.Rows.Add(new object[] { 3, "食品" }); Session["ProductClass"] = fProductClass; } return (DataTable)Session["ProductClass"]; } } private DataTable ProductSubClass { get { if (Session["ProductSubClass"] == null) { DataTable fProductSubClass = new DataTable(); fProductSubClass.Columns.Add(new DataColumn("ParentProductClassKey", typeof(int))); fProductSubClass.Columns.Add(new DataColumn("Name", typeof(string))); fProductSubClass.Rows.Add(new object[] { 1, "石油" }); fProductSubClass.Rows.Add(new object[] { 1, "煤" }); fProductSubClass.Rows.Add(new object[] { 2, "打印机" }); fProductSubClass.Rows.Add(new object[] { 2, "办公桌" }); fProductSubClass.Rows.Add(new object[] { 3, "朱奶" }); fProductSubClass.Rows.Add(new object[] { 3, "面包" }); Session["ProductSubClass"] = fProductSubClass; } return (DataTable)Session["ProductSubClass"]; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) this.BindFormView(); } private void BindFormView() { this.FormView1.DataSource = this.Product; this.FormView1.DataBind(); } protected void InitProductClass(object sender, EventArgs e) { DropDownList fDropDownList = (DropDownList)sender; FormViewRow fFormViewRow = (FormViewRow)fDropDownList.Parent.Parent; fDropDownList.DataTextField = "Name"; fDropDownList.DataValueField = "ProductClassKey"; fDropDownList.DataSource = this.ProductClass; fDropDownList.DataBind(); DataRowView fDataRowView = (DataRowView)this.FormView1.DataItem; if (fDataRowView != null) fDropDownList.SelectedValue = fDataRowView["ProductClassKey"].ToString(); } protected void ProductClass_SelectedIndexChanged(object sender, EventArgs e) { DropDownList fProductClassList = (DropDownList)sender; FormViewRow fFormViewRow = (FormViewRow)fProductClassList.Parent.Parent; DropDownList fProductSubClassList = (DropDownList)fFormViewRow.FindControl("fProductSubClass"); DataView fDataView = this.ProductSubClass.DefaultView; fDataView.RowFilter = string.Format("ParentProductClassKey = {0}", fProductClassList.SelectedValue); fProductSubClassList.DataTextField = "Name"; fProductSubClassList.DataValueField = "ParentProductClassKey"; fProductSubClassList.DataSource = fDataView; fProductSubClassList.DataBind(); } protected void FormView1_PageIndexChanging(object sender, FormViewPageEventArgs e) { this.FormView1.PageIndex = e.NewPageIndex; this.BindFormView(); } }