我对此进行了广泛搜索,但找不到解决问题的方法。我正在尝试从该页面上的用户控件调用页面后面代码中的函数。
我有一个使用母版页的 Web 应用程序。我正在向其中一个内容页面添加一个用户控件。我通过从工具箱中拖放用户控件将其添加到 aspx 页面。我可以从后面的代码中看到用户控件,但我无法访问公共功能。为了解决这个问题,我在后面的代码中创建了一个用户控件对象并使用了 LoadControl 函数。所有这些似乎工作正常。
我遇到的问题是当我试图将事件处理程序从 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 页面中。感谢 June Paik 的解决方案。也感谢 Diego De Vita 的意见。