asp.net中的usercontrol

时间:2011-05-02 07:31:43

标签: c#-4.0

我有一个页面和2个用户控件,第一个用户控件有下拉列表,第二个用户控件有另一个下拉列表,当我们选择第一个用户控件的下拉列表时应该填充第二个用户控件的另一个下拉列表...我们怎样才能实现呢......请在解释中解释

提前感谢...

1 个答案:

答案 0 :(得分:0)

我会将子DropDownList的OnSelectedItemChanged事件和实际的DropDownList公开给顶层公共级别的用户控件。

这将允许您捕获OnSelectedItemChanged中的Page事件并设置第二个用户控件的值。

如果您需要一些示例代码,请告诉我。

好的,首先是用户控件

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SampleUserControl.ascx.cs"     Inherits="WebApplication1.UserControls.SampleUserControl" %>
<asp:DropDownList runat="server" ID="DdlTest" AutoPostBack="true">
  <asp:ListItem Text="Sampe 1" />
  <asp:ListItem Text="Sampe 2" />
</asp:DropDownList>

现在是

背后的文件
public partial class SampleUserControl : System.Web.UI.UserControl
{
    public DropDownList InternalDropDownList
    {
        get { return DdlTest; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

好的,让我们转到实际的.aspx

<form id="form1" runat="server">
<div>  
    <uc1:SampleUserControl ID="SampleUserControl1" runat="server" />
    <uc1:SampleUserControl ID="SampleUserControl2" runat="server" />
</div>
</form>

以及

背后的代码
public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SampleUserControl1.InternalDropDownList.SelectedIndexChanged += InternalDropDownList_SelectedIndexChanged;

    }

    void InternalDropDownList_SelectedIndexChanged(object sender, EventArgs e)
    {
        SampleUserControl2.InternalDropDownList.SelectedValue = SampleUserControl1.InternalDropDownList.SelectedValue;
    }
}