2012-06-11 2 views
0

asp.net 4 프로젝트의 ascx 사용자 정의 컨트롤에서 기본적으로 동적으로 생성 된 확인란 목록이 있습니다. 지금은 가능한 역할 목록 (예 : admin, officer, customer)을 checkboxlist 컨트롤에 추가 한 다음 사용자가 해당 문자열을 찾아 적용 할 역할을 확인합니다.동적으로 생성 된 CheckBoxList 컨트롤에서 문자열 지역화

코드는 다음과 같습니다. 를 Page_Load에 페이지에

...

<asp:CheckBoxList ID="AvailableToRoles" runat="server" CssClass="Labels" 
    RepeatColumns="3"></asp:CheckBoxList> 

는 데이터 소스로 문자열의 목록을 호출합니다.

this.AvailableToRoles.DataSource = Contact.GetPossibleRoles(); 
     this.AvailableToRoles.DataBind(); 

그런 다음 버튼에 연결된 업데이트에서 CheckBoxList 역할을 검사하고 역할에 연락처를 추가하는 다음 문자열을 호출합니다.

List<Role> Roles = new List<Role>(); 

Roles.Add(Role.GetRole("Admin")); 
Roles.Add(Role.GetRole("Officer")); 
foreach (ListItem c in this.AvailableToRoles.Items) 
{ 
    if (c.Selected) 
    { 
     if (c.Text != "Admin") 
     { 
      Roles.Add(Role.GetRole(c.Text.Trim())); 
     } 
    } 
} 

이제는 지역화해야합니다. 가능한 모든 리소스를 나열 할 수있는 전역 리소스 문자열을 가지고 있으며 사용자에게 영어, 스페인어, 독일어 및 프랑스어로 된 글로벌 리소스를 표시해야합니다. 그리고 나중에 선택하면 해당 리소스의 값을 검색합니다. 역할을 수행합니다.

코드를 근본적으로 변경하지 않고도이 작업을 수행하는 방법에 대해서는 확실하지 않습니다. 이 기능을 쉽게 사용할 수 있습니까?

답변

0

할 수있는 작업은 역할 표시 이름 (현지화 가능)을 역할 이름 (현지화로 변경되지 않음)에 연결하는 클래스를 추가하는 것입니다. 그런 다음이를 생성하여 데이터 바인딩에 사용할 수 있습니다. 예를 들어

: 값이 역할 이름에 바인드되지만 표시 라벨이 지역화 표시 이름에 바인딩되도록

class DisplayableRole 
{ 
    public string DisplayName { get; set; } 
    public string RoleName { get; set; } 
} 

AvailableToRoles의 DataTextFieldDataValueField 속성을 설정해야합니다. 그럼 그냥 (WrapInDisplayableRoles 말) 그 위에 DisplayableRole 개체와 데이터 바인딩의 목록에 역할 이름의 목록을 변환하는 방법을 추가

this.AvailableToRoles.DataTextField = "DisplayName"; 
this.AvailableToRoles.DataValueField = "RoleName"; 
this.AvailableToRoles.DataSource = WrapInDisplayableRoles(Contact.GetPossibleRoles()); 
this.AvailableToRoles.DataBind(); 

을 그리고 대신 많은 ListItems, 자신의 Value 속성을 사용의 Text 속성을 사용하는. 이 값은 DisplayableRole 객체의 RoleName 값 (언어 독립적)에 해당합니다.

foreach (ListItem c in this.AvailableToRoles.Items) 
{ 
    if (c.Selected) 
    { 
     if (c.Text != "Admin") 
     { 
      Roles.Add(Role.GetRole(c.Value)); 
     } 
    } 
} 
관련 문제