2011-10-04 4 views
0

J'ai un enum et un usercontrol, tous deux dans le même assemblage (un site web .NET 4).Enums via Markup dans VB.NET

Dans la classe Constantes:

public Enum CrudOperations 
    Add 
    Edit 
    Delete 

Ce contrôle les colonnes dans un GridView sur un UserControl via une propriété sur le UserControl

Public Property Mode() As CrudOperations 
     Get 
      Return [Enum].Parse(GetType(CrudOperations), If(ViewState.Item("Mode"), "0"), True) 
     End Get 
     Set(ByVal value As CrudOperations) 
      ViewState.Item("Mode") = value 
      grdItems.Columns(3).Visible = ((value Or CrudOperations.Add) = CrudOperations.Add) 
      grdItems.Columns(4).Visible = ((value Or CrudOperations.Edit) = CrudOperations.Edit) 
     End Set 
End Property 

En C#, j'ai spécifié les colonnes pour afficher avec le balisage Mode="Edit,Delete", mais dans VB.NET, cela ne fait rien. La seule façon de montrer quelque chose est avec le codebehind, mais si sur la page contenant j'utilise userGrid.Mode = CrudOperations.Edit And CrudOperations.Delete, j'obtiens toutes les colonnes (il y a aussi une colonne delete), mais userGrid.Mode = CrudOperations.Edit Or CrudOperations.Delete ne montre rien.

Existe-t-il un moyen de faire l'équivalent C#?

Répondre

1

Vous devez utiliser l'attribut Flags où une énumération peut être traitée comme un champ de bits.

C#:

[Flags] 
public enum CrudOperations 
{ 
    Add, 
    Edit, 
    Delete 
} 

userGrid.Mode = CrudOperations.Edit | CrudOperations.Delete; 

VB.NET:

<Flags> _ 
Public Enum CrudOperations 
    Add 
    Edit 
    Delete 
End Enum 

Private test As CrudOperations = CrudOperations.Edit Or CrudOperations.Delete 
+1

alternative (en VB.NET de toute façon), vous pouvez simplement affecter les valeurs Base2: Ajouter = 1, Edit = 2, Supprimer = 4, puis utilisez AND logique et OR logique, ou addition: userGrid.Mode = Edit + Delete. – HardCode

+0

Thatnks. Je suppose que c'était le personnage de continuation de ligne. Pour vérifier que le drapeau est défini, vous devez utiliser '((value And CrudOperations.Edit) = CrudOperations.Edit)' – Echilon