asp.net Repeater等資料控制元件模版內部2個DropDownList控制元件級聯
1、新建一個從DropDownList繼承的擴充套件類CommandableDropDownList.cs,程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.Web.UI.WebControls;
namespace GrowthMonitor.BaseClass
{
public class CommandableDropDownList : DropDownList
{
#region 屬性
[
Browsable(true),
DefaultValue("")
]
public string CommandName
{
get
{
return ViewState["CommandName"] == null ? String.Empty : ViewState["CommandName"].ToString();
}
set
{
ViewState["CommandName"] = value;
}
}
[
Browsable(true),
DefaultValue("")
]
public string CommandArgument
{
get
{
return ViewState["CommandArgument"] == null ? String.Empty : ViewState["CommandArgument"].ToString();
}
set
{
ViewState["CommandArgument"] = value;
}
}
#endregion
#region 構造器
public CommandableDropDownList()
{
//
// TODO: 在此處新增建構函式邏輯
//
}
#endregion
#region 事件
private static object _commandEvent = new object();
public event CommandEventHandler SelectedChangedCommand
{
add
{
Events.AddHandler(_commandEvent, value);
}
remove
{
Events.RemoveHandler(_commandEvent, value);
}
}
protected virtual void OnCommand(CommandEventArgs e)
{
CommandEventHandler commandHander = (CommandEventHandler)Events[_commandEvent];
if (commandHander != null)
{
commandHander(this, e);
}
else
{
base.RaiseBubbleEvent(this, e);
}
}
#endregion
#region 覆寫的方法
protected override void OnSelectedIndexChanged(EventArgs e)
{
base.OnSelectedIndexChanged(e);
if (this.AutoPostBack)
{
CommandEventArgs args = new CommandEventArgs(this.CommandName, this.CommandArgument);
OnCommand(args);
}
}
#endregion
}
}
2、在需要使用的頁面頭部加上如下標記:
<%@ Register TagPrefix="ddlTag" Namespace="GrowthMonitor.BaseClass" Assembly="GrowthMonitor" %>
3、在Repeater中的DropDownList
<asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_OnItemDataBound" OnItemCommand="rpt_OnItemCommand">
<ItemTemplate>
<ddlTag:CommandableDropDownList ID="ddlVarietyType" runat="server" CommandName="VarietyTypeChange" AutoPostBack="true">
</ddlTag:CommandableDropDownList>
<ddlTag:CommandableDropDownList ID="ddlVarietyName" runat="server">
</ddlTag:CommandableDropDownList>
</ ItemTemplate>
</asp:Repeater>
4、後臺事件程式碼
public void rpt_OnItemCommand(object sender, RepeaterCommandEventArgs e)
{
if (e.CommandName == "VarietyTypeChange")
{
string currentVarietyTypeID = String.Empty;
int index = e.Item.ItemIndex;
CommandableDropDownList ddl = this.rpt.Items[index].FindControl("ddlVarietyType") as CommandableDropDownList;
if (ddl != null)
{
currentVarietyTypeID = ddl.SelectedItem.Value.Trim();
}
ddl = this.rpt.Items[index].FindControl("ddlVarietyName") as CommandableDropDownList;
if (ddl != null)
{
ddl.DataSource = new VTB_VarietiesBLL().GetData(" IsDelete=0 and VarietyTypeID=" + currentVarietyTypeID, " CreateTime asc");
ddl.DataTextField = "VarietiesName";
ddl.DataValueField = "ID";
ddl.DataBind();
}
}
}
public void rpt_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//品種型別
CommandableDropDownList ddl_VarietyType = e.Item.FindControl("ddlVarietyType") as CommandableDropDownList;
if (ddl_VarietyType != null)
{
ddl_VarietyType.DataSource = new VTB_VarietyTypeBLL().GetData(" IsDelete=0 ", " CreateTime asc");
ddl_VarietyType.DataTextField = "VarietyTypeName";
ddl_VarietyType.DataValueField = "ID";
ddl_VarietyType.DataBind();
}
//品種
CommandableDropDownList ddl_Variety = e.Item.FindControl("ddlVarietyName") as CommandableDropDownList;
if (ddl_Variety != null)
{
ddl_Variety.DataSource = new VTB_VarietiesBLL().GetData(" IsDelete=0 and VarietyTypeID=" + ddl_VarietyType.SelectedItem.Value, " CreateTime asc");
ddl_Variety.DataTextField = "VarietiesName";
ddl_Variety.DataValueField = "ID";
ddl_Variety.DataBind();
}
}
}
相關文章
- 【.net基礎】--DropDownList控制元件:兩級聯動控制元件
- asp.net jquery ajax資料操作 DropDownList級聯ASP.NETjQuery
- asp.net Repeater控制元件內容上下滾動播放ASP.NET控制元件
- 動態綁資料(Repeater控制元件控制元件
- ASP.NET Web Forms – Repeater 控制元件簡介ASP.NETWebORM控制元件
- C#控制元件之Repeater控制元件使用C#控制元件
- DropDownList控制元件的基本用法控制元件
- ASP.NET中Repeater控制元件實現分頁功能ASP.NET控制元件
- Asp.net中DetailsView中新增日曆控制元件 及DropDownList 並實現資料同步更新ASP.NETAIView控制元件
- 自定義DropDownList控制元件的實現控制元件
- Repeater控制元件的分頁實現控制元件
- 母版頁裡面查詢Repeater內控制元件,並構造URL控制元件
- 將WPF內部繫結的控制元件和資料拉取出來控制元件
- GridView修改含有DropDownList控制元件列的寬度View控制元件
- Repeater控制元件實現編輯、更新、刪除操作控制元件
- 在repeater、datalist控制元件中使用分頁功能 (轉)控制元件
- Android省市區三級聯動控制元件Android控制元件
- BAT內部薪資、等級大揭祕(史上最全)BAT
- 給Repeater控制元件裡新增序號的5種方法控制元件
- asp.net DropDownList中內容偽樹狀展示ASP.NET
- asp.net web資料庫控制元件內table(包括巢狀table)的邊線問題ASP.NETWeb資料庫控制元件巢狀
- 利用asp.net Core開發webapi對接雲之家智慧審批資料互聯控制元件ASP.NETWebAPI控制元件
- asp.net中Repeater中巢狀Repeater來顯示跟外層Repeater資料相關的其他資訊ASP.NET巢狀
- iOS Masonry 等間隔或等寬高排列多個控制元件iOS控制元件
- asp.net 內容頁訪問母版頁中的控制元件ASP.NET控制元件
- asp.net 給button 控制元件 換個背景圖片ASP.NET控制元件
- 自定義UIView UITableViewCell等控制元件UIView控制元件
- 從 DataGridView 控制元件 託放資料 到 TreeView控制元件View控制元件
- ASP.NET中資料控制元件中的LinkButton控制元件點選時更換顏色ASP.NET控制元件
- 新ASP.NET圖表控制元件ASP.NET控制元件
- 介紹ASP.NET控制元件IDASP.NET控制元件
- Winform控制元件繫結資料ORM控制元件
- WPF如何得到一個在使用者控制元件內部的元素的座標位置控制元件
- 從 DataGridView 控制元件 託放資料 到 TreeView控制元件(二)View控制元件
- XAML常用控制元件2控制元件
- Android 自定義控制元件 ViewPager頭部指示器控制元件 ViewPagerBelowIndicatorAndroid控制元件ViewpagerIndicator
- ASP.NET驗證控制元件的使用ASP.NET控制元件
- 使用PagedDataSource類實現DataList和Repeater控制元件的分頁顯示 (轉)控制元件