2010-07-13 5 views
1

DropDownList가 스페인어에서 새 항목을 선택할 때 영어로 전환하는 이유는 무엇입니까? 그리고 어떻게 그런 일이 일어나지 않도록합니까?DropDownList가 스페인어에서 영어로 전환합니까?

try { 
     culture = (string) Session["culture"]; 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 
    } 
    catch { 
     Server.Transfer("~/sessiontimeout.aspx"); 
    } 

먼저 언어로 스페인어를 선택 한 후 해당 페이지로 와서 드롭 다운이 채워집니다 (즉, 모두 IsPostBack로하고 !IsPostBack)

<asp:DropDownList ID="ddl_r1pc" runat="server" AutoPostBack="True" 
     OnSelectedIndexChanged="ddlRelationship_SelectedIndexChanged"> 
     <asp:ListItem></asp:ListItem> 
     <asp:ListItem Value="Spouse" Text="<%$Resources:messages, RelSpouse %>"></asp:ListItem> 
     <asp:ListItem Value="Parent(s)" Text="<%$Resources:messages, RelParents %>"></asp:ListItem> 
     <asp:ListItem Value="Other" Text="<%$Resources:messages, Other %>"></asp:ListItem> 
    </asp:DropDownList> 

그런 다음 Page_Load(),이 항상 실행 예상대로 ListItems 텍스트가 스페인어로 표시됩니다. 그러나 드롭 다운에서 다른 항목을 선택하면 모든 항목이 영어로 다시 나타납니다! 당신은 (모두 서버 측과 방화범)이 AutoPostBack을하기 전에 드롭 다운을 검토 할 때는

, 각을 ListItem이 제대로

Value="Some English" Text="Some Español" 

반면 후 다시 게시, 그것은

모양에 같은 설정
Value="Some English" Text="The same English" 

왜 이런 일이 벌어지고, PostBacks보다 스페인어를 계속 볼 수있게하려면 어떻게해야합니까? 참고

:

루틴은 OnSelectedIndexChanged에에 현재 주석, 그래서 문제가되지 않습니다 지적
  1. .
  2. DropDownList에 EnableViewState="true"을 추가했는데 아무런 차이가 없으므로 삭제했습니다.
  3. 아래와 같이 Ichiban에서 제안한대로 Thread.CurrentThread.CurrentUICulturePage_Load에서 Page_Init()으로 변경했지만 차이점도 없습니다.

    protected override void InitializeCulture() { 
        try { 
         culture = (string) Session["culture"]; 
         Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 
        } 
        catch { 
         Server.Transfer("~/sessiontimeout.aspx"); 
        } 
    
        base.InitializeCulture(); 
    } 
    

    을 한 번 :

답변

0

Page_Init 이벤트에 CultureInfo을 설정하는 코드를 추가 그것은 당신이 무시 InitializeCuture()CurrentUICulture을 설정해야합니다 밝혀 나는 AutoPostBacks 이후 선택한 언어로 드롭 다운을 유지합니다!

0

시도 대신 Page_Load

protected override void OnInit(object source, EventArgs e) { 
    try { 
     culture = (string) Session["culture"]; 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 
    } 
    catch { 
     Server.Transfer("~/sessiontimeout.aspx"); 
    } 
} 
+0

감사합니다. 불행히도 Visual Studio는 "재정의"부분 ("재정의 할 적절한 방법이 없습니다")에 대해 불평하고 있으므로 제거했습니다. 또한 OnInit()가 실행되지 않았으므로이를 호출 한 Page_Init()로 변경했습니다. 그러나 문제는 여전히 남아 있으며 DropDownList는 새 항목을 선택할 때 스페인어에서 영어로 바뀝니다. 어떤 아이디어? – Jelks