我有一个具有一些搜索功能的用户控件,然后我还有一个包含网格的控件。在具有网格的控件中,我具有检索一些项目的所有功能,我需要从搜索控件填充报告。
我的问题是,我已经阅读了这个但不完全确定如何使其工作,我读到我需要在控件A中注册一个事件处理程序,它在控件B中调用该函数。它是如何工作的?
在控件B中说我需要调用一个函数GetAllItemsByRegistrantID(int id).
如何从控件A调用此函数?
我真的很感激任何帮助或指导。
此致
答案 0 :(得分:3)
Here is an example if you had to do it using events.
在您的第一个用户控件(搜索控件)上定义自定义事件。
public partial class UserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public event EventHandler<MyCustomeEventArgs> MyCustomClickEvent;
protected virtual void OnMyCustomClickEvent(MyCustomeEventArgs e)
{
if (MyCustomClickEvent != null)
MyCustomClickEvent(this, e);
}
public void button1_Click(object sender, EventArgs e)
{
OnMyCustomClickEvent(new MyCustomeEventArgs(5));
}
}
public class MyCustomeEventArgs : EventArgs
{
public MyCustomeEventArgs(int searchID)
{
SearchID = searchID;
}
public int SearchID { get; set; }
}
在使用网格的用户控件上,定义处理程序。
public void HandleCustomEvent(object sender, MyCustomeEventArgs e)
{
GetAllItemsByRegistrantID(e.SearchID);
}
public void GetAllItemsByRegistrantID(int id)
{
Label1.Text = id.ToString();
}
在他们俩居住的页面上,将它们连接在一起。
protected void Page_Load(object sender, EventArgs e)
{
UserControl1Instance.MyCustomClickEvent += UserControl2Instance.HandleCustomEvent;
}
答案 1 :(得分:0)
我肯定会尝试避免这种情况。您应该将这种代码放在一个类中,并在两个控件之间共享它。