代码之家  ›  专栏  ›  技术社区  ›  adam0101

为什么我的匿名函数不会在grid.prerender上启动?

  •  0
  • adam0101  · 技术社区  · 14 年前

    在我的GridView中,有一些字段可以在页脚中插入新记录。

    在我的objectdatasource selecting事件中,如果没有返回任何记录,我将绑定一个模拟行以强制显示页脚,以便它们仍然可以添加记录。由于该行不包含实际数据,因此我隐藏了该行。

        ...
        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 回复  |  直到 14 年前
        1
  •  2
  •   Gideon Engelberth    14 年前

    问题是您正在创建一个返回布尔值而不是赋值的函数。如果你使用的是vb 2008,你会陷入困境,但用vb 2010,你可以做一个子代。

    AddHandler mygridview.PreRender, Sub() mygridview.Rows(0).Visible = False
    
        2
  •  0
  •   Glennular    14 年前

    你不需要添加参数吗?

    AddHandler mygridview.PreRender, _ 
       Function(sender as Object, e as EventArgs) mygridview.Rows(0).Visible = False
    
        3
  •  0
  •   Bryan    14 年前

    这就是你需要的:

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

    所以,你们都是对的。