0

В моем gridview У меня есть поля для вставки новой записи в нижний колонтитул.Почему моя анонимная функция не срабатывает на grid.prerender?

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

... 
    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 Прокрутите страницу вниз, чтобы увидеть фигуру. –

ответ

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

0

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

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

Таким образом, вы оба были наполовину.

Смежные вопросы