从另一个页面动态调用用户控件中的方法

时间:2010-07-05 12:10:00

标签: c# reflection

我正在编写一个需要动态调用用户控制方法的页面。

  1. 我的页面上有一个GridView,在RowDataBound上我为每一行加载了这个用户控件。

  2. 在我的用户控件中,我有一个公共无效方法,我需要在加载此控件时调用。

  3. 我正在阅读有关反射的内容,但在我使用的代码中,我找不到用户控件上创建的方法。见代码:

    UserControl x = (UserControl)LoadControl("../usercontrols/ucResultData.ascx"); x.GetType().InvokeMember("CreateData", BindingFlags.InvokeMethod, null, this.Page, null);

    这是用户控件上的代码:

    public void CriarGradeHorario() { ... }

1 个答案:

答案 0 :(得分:1)

您正尝试在当前Page对象上调用方法CreateData。您想要在用户控件对象上调用CriarGradeHorario方法:

x.GetType()
  .InvokeMember("CriarGradeHorario", BindingFlags.InvokeMethod, null, x, null);

但是,如果要以这种方式调用方法,则应考虑将其移出用户控件并将其放在类文件中。这样你就可以在不使用反射的情况下调用它。