Почему моя анонимная функция не запускается в grid.prerender? - PullRequest
0 голосов
/ 23 апреля 2010

В моем виде сетки у меня есть поля для вставки новой записи в нижний колонтитул.

В моем событии выбора источника данных объекта, если не возвращено ни одной записи, я связываю одну фиктивную строку, чтобы заставить нижний колонтитул показывать, чтобы они все еще моглидобавить записи.Поскольку строка не содержит реальных данных, я скрываю строку.

    ...
    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 ]

2 голосов
/ 24 апреля 2010

Проблема в том, что вы создаете функцию, которая возвращает логическое значение вместо присвоения значения. Если вы используете VB 2008, вы застряли, но с VB 2010 вы могли бы вместо этого сделать замену.

AddHandler mygridview.PreRender, Sub() mygridview.Rows(0).Visible = False
0 голосов
/ 13 июля 2010

Это то, что вам нужно:

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

Итак, вы оба были наполовину правы.

0 голосов
/ 24 апреля 2010

вам не нужно добавлять параметры?

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