0

我有一个带有一些搜索功能的用户控件,然后我还有一个包含网格的控件。在具有网格的控件中,我具有检索某些项目的所有功能,我需要从搜索控件填充报告。

我的问题是,我已经阅读了有关此内容但不完全确定如何使其工作的信息,我读到我需要在控件 A 中注册一个事件处理程序,该处理程序调用控件 B 中的函数。它是如何工作的?

说在控件 B 中有一个我需要调用的函数 我 GetAllItemsByRegistrantID(int id).怎样才能从控件 A 调用这个函数?

我真的很感激任何帮助或指导。

问候

4

2 回答 2

3

这是一个示例,如果您必须使用事件来执行此操作。

在您的第一个用户控件(搜索控件)上定义一个自定义事件。

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;
}
于 2012-07-22T22:03:02.670 回答
0

我肯定会尽量避免这种情况。您应该将此类代码放在一个类中并在两个控件之间共享它。

于 2012-07-22T21:33:18.440 回答