2011-10-04 3 views
0

동일한 어셈블리 (일반 .NET 4 웹 사이트)에 enum과 usercontrol이 있습니다. s 수 클래스에서VB.NET의 마크 업을 통한 열거 형

:

public Enum CrudOperations 
    Add 
    Edit 
    Delete 

이것은 C#에서 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 

의 속성을 통해 UserControl을에의 GridView의 열을 제어, 나는 열을 지정한 마크 업을 Mode="Edit,Delete"으로 표시하지만 VB.NET에서는 표시되지 않습니다. 내가 보여줄 수있는 유일한 방법은 codebehind이지만, 포함 된 페이지에서 userGrid.Mode = CrudOperations.Edit And CrudOperations.Delete을 사용하는 경우 모든 열 (삭제 열도 있음)을 얻지 만 userGrid.Mode = CrudOperations.Edit Or CrudOperations.Delete은 아무것도 표시하지 않습니다.

C#을 사용하는 방법이 있습니까?

답변

1

열거 형을 비트 필드로 처리 할 수있는 경우 Flags 특성을 사용해야합니다.

[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

또는 (VB.NET에서 어쨌든), 당신은 단지 Base2의 값을 할당 할 수 있습니다 이

C#을

추가 = 1, 편집 = 2, 삭제 = 4, 그런 다음 논리 AND 및 논리 OR을 사용하거나 추가 : userGrid.Mode = 편집 + 삭제. – HardCode

+0

Thatnks. 라인 연속성 캐릭터였던 것 같아요. 플래그가 설정되어 있는지 확인하려면'((Value And CrudOperations.Edit) = CrudOperations.Edit)'을 사용해야합니다. – Echilon

관련 문제