为什么我的匿名函数不会触发grid.prerender?

时间:2010-04-23 19:46:50

标签: asp.net vb.net gridview objectdatasource anonymous-methods

在我的gridview中,我有用于在页脚中插入新记录的字段。

在我的objectdatasource选择事件中,如果没有记录回来,我绑定一个模拟行来强制显示页脚,这样他们仍然可以添加记录。由于该行不包含实际数据,因此我隐藏了该行。

    ...
    If result.ItemCount = 0 Then
        result = mockRow
        AddHandler mygridview.PreRender, AddressOf HideRow
    End If
End Sub

Private Sub HideRow(ByVal sender as Object, ByVal e as EventArgs)
    mygridview.Rows(0).Visible = False
End Sub

这很好用。但是,我想这样压缩它:

    ...
    If result.ItemCount = 0 Then
        result = mockRow
        AddHandler mygridview.PreRender, Function() mygridview.Rows(0).Visible = False
    End If
End Sub

这个编译很好,但行不会被隐藏。谁能告诉我为什么我的匿名功能没有被击中?

3 个答案:

答案 0 :(得分:2)

问题是您正在创建一个返回布尔值而不是赋值的函数。如果您正在使用VB 2008,那么您将陷入困境,但使用VB 2010,您可以改为使用VB。

AddHandler mygridview.PreRender, Sub() mygridview.Rows(0).Visible = False

答案 1 :(得分:0)

你不需要添加参数吗?

AddHandler mygridview.PreRender, _ 
   Function(sender as Object, e as EventArgs) mygridview.Rows(0).Visible = False

答案 2 :(得分:0)

这就是你需要的:

AddHandler mygridview.PreRender, Sub(sender as Object, e as EventArgs) mygridview.Rows(0).Visible = False

所以,你们两个都是对的。