2016-03-28 3 views
3

Ich habe ASPxGridView, um eine Liste der Datensätze anzuzeigen. In der Ansicht lege ich eine Löschspalte an und möchte, dass eine Löschschaltfläche angezeigt wird, wenn der Datensatz eine erfüllende Bedingung hat. Der folgende Code:Bedingte ausblenden DeleteButton in GridViewCommandColumn

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

Also konzentriere ich mich auf das Visible-Attribut von DeleteButton. Die Bedingung muss einen booleschen Wert zurückgeben, damit sie weiß, wann die Löschschaltfläche ein- und ausgeblendet werden muss. Unten ist ein Beispiel, wie dies zu implementieren:

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

in VB-Code:

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

So ist die Funktion benötigt einen Wert True zurück, wenn Aktive Wahr und Falsch-Wert, wenn Active ist ist falsch. Mit anderen Worten, ich trig in jedem Datensatz eine Funktion in Code hinterher, um die Löschschaltfläche anzuzeigen, wenn der Datensatz eine erfüllende Bedingung hat. Aber ich habe eine Fehlermeldung am Ende:

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. 

ich dort stecken und nicht wissen, andere Art und Weise, dies zu tun. Bitte hilf mir dabei.

+0

Folgen Sie dem Link hier: http://stackoverflow.com/questions/1461302/conditional-hide-commandfield-oder-buttonfield-in-gridview –

+0

Danke. Aber diese Frage konzentriert sich auf aspxgridview, aber nicht auf aspgridview. –

Antwort

1

Nach einer Nacht auf, dies zu erforschen, habe ich einen neuen Weg finden, um dieses Problem zu lösen:

Dieser Codeblock aus aspx Datei innerhalb eines 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> 

vom Code behide, implementiere ich eine anfängliche Methode einen Trigger für Dele zu handhaben 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 

Die Methode wird die DeleteButton durch Prüfen der Aktive Wert auf Command Button Initialisieren behandeln. Wenn Active True ist, wird das DeleteButton und umgekehrt angezeigt.

0

könnten Sie entweder übernehmen die ASPxClientGridView.CustomButtonClick Event wie hier gezeigt: Link oder Zeigen Sie benutzerdefiniertes Steuerelement in GridViewDataColumn.DataItemTemplate: Link

+0

Das Ereignis wird nach dem Klicken des Benutzers behandelt. Aber wie sieht es mit dem Event beim ersten Laden der View aus? –