如何在FormView中实现DropDownList连动选择

<%@ 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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值