Я много искал по этому вопросу, но не могу найти решение моей проблемы. Я пытаюсь вызвать функцию в коде страницы из пользовательского элемента управления на этой странице.
У меня есть веб-приложение, которое использует главную страницу. Я добавляю пользовательский элемент управления, который я написал, на одну из страниц контента. Я добавил пользовательский элемент управления на страницу aspx, перетащив его из панели инструментов. Я могу видеть пользовательский элемент управления из кода позади, но я не могу получить доступ к публичным функциям. Чтобы решить эту проблему, я создал объект пользовательского элемента управления в коде позади и использовал функцию LoadControl. Все это работает нормально.
У меня возникла проблема, когда я пытаюсь подключить EventHandler со страницы aspx к пользовательскому элементу управления. Все компилируется и работает нормально, но я ничего не вижу на странице. Я думаю, проблема в том, что EventHandler всегда равен нулю.
Пользовательский контрольный код
public partial class ucBuyerList : System.Web.UI.UserControl
{
public delegate void BuyerSelectedEventHandler(object sender, EventArgs e);
public event BuyerSelectedEventHandler BuyerSelected;
private string name = "";
public string Name
{
get { return name; }
set { name = value; }
}
private string auid = "";
public string AUID
{
get { return auid; }
set { auid = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
}
private void OnBuyerSelected(EventArgs e)
{
if (BuyerSelected != null)
{
BuyerSelected(this, new EventArgs());
}
}
protected void lbBuyerList_SelectedIndexChanged(object sender, EventArgs e)
{
SetNameAndAUID();
OnBuyerSelected(e);
}
private void SetNameAndAUID()
{
name = lbBuyerList.SelectedItem.Text;
auid = lbBuyerList.SelectedItem.Value;
}
}
Код родительской страницы
public partial class frmBuyerInformation : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Master.changePageTitle("Buyer Information");
buyerList.BuyerSelected += new ucBuyerList.BuyerSelectedEventHandler(buyerListControl_BuyerSelected);
}
void buyerListControl_BuyerSelected(object sender, EventArgs e)
{
DisplayBuyerInformation();
}
public void DisplayBuyerInformation()
{
tbName.Text = buyerList.Name;
tbAUID.Text = buyerList.AUID;
}
}
Может ли кто-нибудь увидеть, что я делаю неправильно?
РЕДАКТИРОВАТЬ :Эта проблема была решена. Приведенные выше фрагменты кода теперь работают. Если кто-то столкнется с проблемой, с которой я столкнулся, вы можете смоделировать приведенный выше код. Убедитесь, что AutoEventWireup="true"
на страницах aspx и ascx. Спасибо, Джун Пайк, за ваше решение. Спасибо, Диего Де Вита, за ваш вклад.