2010-04-23 70 views
0

在我的gridview中,我有用于在页脚中插入新记录的字段。为什么我的匿名函数不会在grid.prerender上触发?

在我的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 

这样编译得很好,但行不会隐藏。任何人都可以告诉我为什么我的匿名函数没有被击中?

+0

考虑使用Listview控件。它呈现给你一个插入列。 http://msdn.microsoft.com/en-us/library/bb515103.aspx 滚动到底部以查看数字。 – 2010-04-23 19:54:23

回答

2

问题是您正在创建一个返回布尔值而不是分配值的函数。如果你使用的是VB 2008,你会陷入困境,但在VB 2010中,你可以改为使用Sub。

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

你不需要添加参数吗?

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

它必须能够推断出它们。我尝试了两种方法。仍然没有工作。 – adam0101 2010-04-23 21:57:58

0

这是你所需要的:

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

所以,你都是说对了一半。

相关问题