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#?
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
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