2016-03-28 1 views
3

У меня есть ASPxGridView для просмотра списка записей. В представлении я создаю столбец удаления и хочу, чтобы он показывал кнопку удаления всякий раз, когда у записи есть условие удовлетворения. Код:Условно Скрыть DeleteButton в GridViewCommandColumn

<dx:GridViewCommandColumn Caption="Delete" VisibleIndex="1" Width="30px" 
       meta:resourcekey="GridViewCommandColumnResource1"> 
       <DeleteButton Visible="True"> 
       </DeleteButton> 
      </dx:GridViewCommandColumn> 

Поэтому я фокусируюсь на видимом атрибуте DeleteButton. Условие должно возвращать логическое значение, чтобы он знал, когда показывать и скрывать кнопку удаления. Ниже приведен пример того, как осуществить это:

<DeleteButton Visible='<%# ShowHide(Eval("Active")) %>'> 
       </DeleteButton> 

в VB Код:

Protected Function ShowHide(Active As Boolean) As Boolean 
    Return Active 
End Function 

Так функция нужно возвращать истинное значение, если Активный истинно, и ложное значение, если Активный является ложным. Другими словами, я запускаю функцию в коде за каждой записью, чтобы показать кнопку удаления, если запись имеет условие удовлетворения. Но я получил сообщение об ошибке, в конце концов:

Parser Error Message: Databinding expressions are only supported on objects that have a DataBinding event. DevExpress.Web.ASPxGridView.GridViewCommandColumnButton does not have a DataBinding event. 

я застрял там и не знаю другого способа сделать это. Пожалуйста, помогите мне с этим.

+0

Перейдите по ссылке: http://stackoverflow.com/questions/1461302/condition-hide-commandfield-or-buttonfield-in-gridview –

+0

Спасибо. Но этот вопрос сосредоточен на aspxgridview, но не aspgridview. –

ответ

1

После ночи, чтобы исследовать на это, я нашел новый способ решения этой проблемы:

Этот блок кода из файла ASPX в пределах ASPxGridView:

<dx:GridViewCommandColumn Caption="Delete" VisibleIndex="1" Width="30px" 
       meta:resourcekey="GridViewCommandColumnResource1"> 
       <DeleteButton Visible='True'><!--TRI - 20160329 Please make sure the Visible attribute always True--> 
       </DeleteButton> 
      </dx:GridViewCommandColumn> 

из кода behide я реализую первоначальный метод для обработки триггера на Деле teButton:

Protected Sub xgv_CommandButtonInitialize(sender As Object, e As DevExpress.Web.ASPxGridView.ASPxGridViewCommandButtonEventArgs) Handles xgv.CommandButtonInitialize 
    If e.ButtonType = DevExpress.Web.ASPxGridView.ColumnCommandButtonType.Delete Then 
     If sender.GetRowValues(e.VisibleIndex, "Active") = True Then 
      e.Visible = False 
     End If 
    End If 
End Sub 

метод будет обрабатывать кнопку удаления, проверяя Активный значение на Command Button Initialize. Если значение Active равно True, оно скроет DeleteButton и наоборот.

0

Вы можете либо обрабатывать ASPxClientGridView.CustomButtonClick Event, как показано здесь: Link или Поместите свой пользовательский элемент управления в GridViewDataColumn.DataItemTemplate: Link

+0

Событие обрабатывается после щелчка пользователя. Но как насчет события для обработки первой загрузки представления? –