/ / зареждане на падащо меню в един потребителски контрол от друг потребителски контрол на същата страница - asp.net

зареждане на падащо меню в един потребителски контролен панел от друг потребителски контрол на същата страница - asp.net

Аз съм нов за потребителските контроли, Имам ситуация, която не мога да реша, както по-долу

При натискане на бутон в потребителския контрол1 се свързва падащо в потребителския контрол2 на същата страница. и потребителските контроли са в техните собствени панели за обновяване.

UserControl1 ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="SampleWebApp.WebUserControl1" %>
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>

UserControl2 ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl2.ascx.cs" Inherits="SampleWebApp.WebUserControl2" %>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

Над два потребителски контроли са в aspx страница, както е показано по-долу ASPX

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<UC2:UserControl1 ID="UserControl1" runat="server" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div>
<UC2:UserControl2 ID="usercontrol2" runat="server" />
</div>
</ContentTemplate>
</asp:UpdatePanel>

Сега Големият въпрос е когато щракнете върху бутона в потребителския контрол 2 след това падащия списък в потребителския контрол 1 shud b Моля помогнете

Благодаря предварително

Отговори:

0 за отговор № 1

Препоръчвам да се създадат събития във всеки потребителконтролира, че хостингът на страниците на потребителските контроли се абонира и след това има логика в манипулаторите на събития на страницата, които знаят да кажат на потребителския контрол чрез методи / свойства в потребителския контрол, че те трябва да се връщат, като това:

public class UserControlClass1
{
// Define event that will be raised by user control to anyone interested in handling the event
public event UC_Button1ClickEventHandler UC_Button1Click;
public delegate void UC_Button1ClickEventHandler();

public void DoSomething1()
{
// This method can do anything you want the control to do (i.e. rebind, etc.)
}

// Mechanism to allow event to be raised by user control
private void Button1_Click(System.Object sender, System.EventArgs e)
{
if (UC_Button1Click != null)
{
UC_Button1Click();
}
}
}

public class UserControlClass2
{
// Define event that will be raised by user control to anyone interested in handling the event
public event UC_Button2ClickEventHandler UC_Button2Click;
public delegate void UC_Button2ClickEventHandler();

public void DoSomething2()
{
// This method can do anything you want the control to do (i.e. rebind, etc.)
}

// Mechanism to allow event to be raised by user control
private void Button2_Click(System.Object sender, System.EventArgs e)
{
if (UC_Button2Click != null)
{
UC_Button2Click();
}
}
}

Сега в страницата .aspx, която хоства и двата потребителски контроли, тя може да се абонира за всяко от потребителските контролни събития, като това:

userControl1.UC_Button1Click += Button1_Click;
userControl2.UC_Button2Click += Button2_Click;

И тук в реализацията на обработващия събитие е мястото, където страницата управлява взаимодействието между двата потребителски контроли, като това:

// When the button in user control 1 is clicked, then the DoSomething2 method
// is called in user control 2 (i.e. bind data, etc.)
public void Button1_Click(object sender, EventArgs args)
{
// Call the DoSometing2 method in user control 2
userControl2.DoSomething2();
}

// When the button in user control 2 is clicked, then the DoSomething1 method
// is called in user control 1 (i.e. bind data, etc.)
public void Button2_Click(object sender, EventArgs args)
{
// Call the DoSometing1 method in user control 1
userControl1.DoSomething1();
}

Накратко, страницата обработва препратките къмпотребителските контроли, така че двата потребителски контрола не се намират едно на друго, нито че всеки от другите дори съществува. Страницата също така обработва координирането на това, което се случва, когато събитие е повдигнато от потребителски контрол и извикване в другия контрол чрез публичен метод.