2012-11-20 29 views
0

请原谅我对代表的无知。我想在一个asp.net的WinForms页面注册一个GridView事件的处理程序:如何注册类方法作为控件事件处理程序

Class myClass 
{ 
    void grid_rowDataBound(object sender, GridViewCommandEventArgs e) 
    { blah blah } 
} 

myClass myClassInstance = new myClass(); //done in Page_Load 

<asp:GridView ID="server_grid" runat="server" OnRowDataBound="myClassInstance.grid_RowDataBound"> 
    yadda yadda 
</asp:GridView> 

我得到一个运行时错误“授人以实例方法不能为空‘这个’。”我现在唯一的解决方案是定义一个新的页面函数,它只需调用我的类方法并在OnRowDataBound中注册该页面函数。但没有直接的方式来注册没有间接方向的GridView事件的类方法?或者所有页面控件事件都需要在页面类中定义的处理程序?

回答

1

您可以使用以下内容,但这只是定义一个新功能的简短方法,就像您已经建议的那样。

server_grid.RowDataBound += (s,e) => myClassInstance.grid_RowDataBound(s, e); 
+0

这是非常好的,谢谢。我仍然想知道为什么我会收到这个错误,但这是一个简短的'甜蜜的解决方法。 –

+0

当代理被分配时,很可能该类尚未实例化。在到达实例化类的'Page_Load'之前,控件已经存在。 –

+0

*打头*你是对的。谢谢!! –

相关问题