Перечисления через разметку в VB.NET - PullRequest
0 голосов
/ 04 октября 2011

У меня есть enum и usercontrol, оба в одной сборке (простой веб-сайт .NET 4).

В классе Constants:

public Enum CrudOperations
    Add
    Edit
    Delete

Это управляет столбцами в GridView на UserControl через свойство на 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

В C # я указал столбцы для отображения с разметкой как Mode="Edit,Delete", но в VB.NETэто ничего не делает.Единственный способ получить что-либо, что можно показать, - с помощью кода, но если на содержащей странице я использую userGrid.Mode = CrudOperations.Edit And CrudOperations.Delete, я получу все столбцы (есть также столбец удаления), но userGrid.Mode = CrudOperations.Edit Or CrudOperations.Delete ничего не показывает.

Есть ли способ сделать эквивалент C #?

1 Ответ

1 голос
/ 04 октября 2011

Вам необходимо использовать атрибут Flags, где перечисление можно рассматривать как битовое поле.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...