2013-08-07 95 views
0

我有一個網站,其中包含3個選項成語。多語言網站與全球資源

當用戶單擊某個按鈕更改成語時,我需要將所有標題和一些文本更改爲我的GridView。

我在我的cs中做了這個選項,但是這個翻譯只在第二次點擊時才起作用。

什麼可能是錯的?

我製作了五個標籤進行測試,並且所有文本均在第一次點擊翻譯。

我在其他頁面中應用此選項,並且還在第一次單擊時進行了翻譯。

我的.aspx

<body> 
<form id="form1" runat="server"> 
<div> 
    <div align="center"> 
     <asp:ImageButton ID="pt" ImageUrl="style/PT_48.png" runat="server" OnClick="pt_OnChange" OnClientClick="return pt_OnChange()" /> 
     &nbsp; 
     <asp:ImageButton ID="en" ImageUrl="style/EN_48.png" runat="server" OnClick="en_OnChange" OnClientClick="return en_OnChange()" /> 
     &nbsp; 
     <asp:ImageButton ID="es" ImageUrl="style/ES_48.png" runat="server" OnClick="es_OnChange" OnClientClick="return es_OnChange()" /> 
    </div> 
    <asp:Label ID="teste" runat="server"></asp:Label> 
    <asp:Label ID="Label1" runat="server"></asp:Label> 
    <asp:Label ID="Label2" runat="server"></asp:Label> 
    <asp:Label ID="Label3" runat="server"></asp:Label> 
    <asp:Label ID="Label4" runat="server"></asp:Label> 
    <div id="Div1" runat="server"> 
     <br /> 
     <br /> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" GridLines="None" 
      CssClass="table table-bordered table-striped" HeaderStyle-Font-Size="14px"> 
      <Columns> 
       <asp:BoundField DataField="idTickets" /> 
       <asp:BoundField DataField="UserName" /> 
       <asp:BoundField DataField="AccessGroup" /> 
       <asp:BoundField DataField="FolderAccess" /> 
       <asp:BoundField DataField="RequestDate" DataFormatString="{0:d}" /> 
       <asp:BoundField DataField="SituationDesc" /> 
       <asp:BoundField DataField="Approver" /> 
       <asp:BoundField DataField="ApprovalDate" DataFormatString="{0:d}" /> 
       <asp:BoundField DataField="BusinessJustification" /> 
       <asp:BoundField DataField="Server" /> 
       <asp:BoundField DataField="UserRequestor" /> 
      </Columns> 
     </asp:GridView> 
    </div> 
</div> 
</form> 

我的.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    Idioma.MudaCultura(idiom); 
    Label1.Text = Idioma.RetornaMensagem("UserRequestor"); 
    Label2.Text = Idioma.RetornaMensagem("BusinessJustification"); 
    Label3.Text = Idioma.RetornaMensagem("welcome"); 
    Label4.Text = Idioma.RetornaMensagem("btnManager"); 
    teste.Text = Idioma.RetornaMensagem("SituationDesc"); 
    GridView1.Columns[0].HeaderText = Idioma.RetornaMensagem("idTickets"); 
    GridView1.Columns[1].HeaderText = Idioma.RetornaMensagem("UserName"); 
    GridView1.Columns[2].HeaderText = Idioma.RetornaMensagem("AccessGroup"); 
    GridView1.Columns[3].HeaderText = Idioma.RetornaMensagem("FolderAccess"); 
    GridView1.Columns[4].HeaderText = Idioma.RetornaMensagem("RequestDate"); 
    GridView1.Columns[5].HeaderText = Idioma.RetornaMensagem("SituationDesc"); 
    GridView1.Columns[6].HeaderText = Idioma.RetornaMensagem("Approver"); 
    GridView1.Columns[7].HeaderText = Idioma.RetornaMensagem("ApprovalDate"); 
    GridView1.Columns[8].HeaderText = Idioma.RetornaMensagem("BusinessJustification"); 
    GridView1.Columns[9].HeaderText = Idioma.RetornaMensagem("Server"); 
    GridView1.Columns[10].HeaderText = Idioma.RetornaMensagem("UserRequestor"); 

    if (!Page.IsPostBack) 
    { 
     var listaTickets = new Tickets().ConsultarTickets(); 
     if (listaTickets != null) 
     { 
      this.GridView1.DataSource = listaTickets; 
      if (listaTickets.Count != 0) 
      { 
       this.GridView1.DataBind(); 
       GridView1.HeaderRow.TableSection = TableRowSection.TableHeader; 
      } 
     } 
    } 
} 

protected void pt_OnChange(object sender, EventArgs e) 
{ 
    idiom = "pt"; 
    Idioma.MudaCultura(idiom); 
    GridView1.Columns[0].HeaderText = Idioma.RetornaMensagem("idTickets"); 
    GridView1.Columns[1].HeaderText = Idioma.RetornaMensagem("UserName"); 
    GridView1.Columns[2].HeaderText = Idioma.RetornaMensagem("AccessGroup"); 
    GridView1.Columns[3].HeaderText = Idioma.RetornaMensagem("FolderAccess"); 
    GridView1.Columns[4].HeaderText = Idioma.RetornaMensagem("RequestDate"); 
    GridView1.Columns[5].HeaderText = Idioma.RetornaMensagem("SituationDesc"); 
    GridView1.Columns[6].HeaderText = Idioma.RetornaMensagem("Approver"); 
    GridView1.Columns[7].HeaderText = Idioma.RetornaMensagem("ApprovalDate"); 
    GridView1.Columns[8].HeaderText = Idioma.RetornaMensagem("BusinessJustification"); 
    GridView1.Columns[9].HeaderText = Idioma.RetornaMensagem("Server"); 
    GridView1.Columns[10].HeaderText = Idioma.RetornaMensagem("UserRequestor"); 
    Label1.Text = Idioma.RetornaMensagem("UserRequestor"); 
    Label2.Text = Idioma.RetornaMensagem("BusinessJustification"); 
    Label3.Text = Idioma.RetornaMensagem("welcome"); 
    Label4.Text = Idioma.RetornaMensagem("btnManager"); 
    teste.Text = Idioma.RetornaMensagem("SituationDesc"); 
} 

protected void en_OnChange(object sender, EventArgs e) 
{ 
    idiom = "en"; 
    Idioma.MudaCultura(idiom); 
    GridView1.Columns[0].HeaderText = Idioma.RetornaMensagem("idTickets"); 
    GridView1.Columns[1].HeaderText = Idioma.RetornaMensagem("UserName"); 
    GridView1.Columns[2].HeaderText = Idioma.RetornaMensagem("AccessGroup"); 
    GridView1.Columns[3].HeaderText = Idioma.RetornaMensagem("FolderAccess"); 
    GridView1.Columns[4].HeaderText = Idioma.RetornaMensagem("RequestDate"); 
    GridView1.Columns[5].HeaderText = Idioma.RetornaMensagem("SituationDesc"); 
    GridView1.Columns[6].HeaderText = Idioma.RetornaMensagem("Approver"); 
    GridView1.Columns[7].HeaderText = Idioma.RetornaMensagem("ApprovalDate"); 
    GridView1.Columns[8].HeaderText = Idioma.RetornaMensagem("BusinessJustification"); 
    GridView1.Columns[9].HeaderText = Idioma.RetornaMensagem("Server"); 
    GridView1.Columns[10].HeaderText = Idioma.RetornaMensagem("UserRequestor"); 
    Label1.Text = Idioma.RetornaMensagem("UserRequestor"); 
    Label2.Text = Idioma.RetornaMensagem("BusinessJustification"); 
    Label3.Text = Idioma.RetornaMensagem("welcome"); 
    Label4.Text = Idioma.RetornaMensagem("btnManager"); 
    teste.Text = Idioma.RetornaMensagem("SituationDesc"); 
} 

protected void es_OnChange(object sender, EventArgs e) 
{ 
    idiom = "es"; 
    Idioma.MudaCultura(idiom); 
    GridView1.Columns[0].HeaderText = Idioma.RetornaMensagem("idTickets"); 
    GridView1.Columns[1].HeaderText = Idioma.RetornaMensagem("UserName"); 
    GridView1.Columns[2].HeaderText = Idioma.RetornaMensagem("AccessGroup"); 
    GridView1.Columns[3].HeaderText = Idioma.RetornaMensagem("FolderAccess"); 
    GridView1.Columns[4].HeaderText = Idioma.RetornaMensagem("RequestDate"); 
    GridView1.Columns[5].HeaderText = Idioma.RetornaMensagem("SituationDesc"); 
    GridView1.Columns[6].HeaderText = Idioma.RetornaMensagem("Approver"); 
    GridView1.Columns[7].HeaderText = Idioma.RetornaMensagem("ApprovalDate"); 
    GridView1.Columns[8].HeaderText = Idioma.RetornaMensagem("BusinessJustification"); 
    GridView1.Columns[9].HeaderText = Idioma.RetornaMensagem("Server"); 
    GridView1.Columns[10].HeaderText = Idioma.RetornaMensagem("UserRequestor"); 
    Label1.Text = Idioma.RetornaMensagem("UserRequestor"); 
    Label2.Text = Idioma.RetornaMensagem("BusinessJustification"); 
    Label3.Text = Idioma.RetornaMensagem("welcome"); 
    Label4.Text = Idioma.RetornaMensagem("btnManager"); 
    teste.Text = Idioma.RetornaMensagem("SituationDesc"); 
} 

我與RetornaMensagem和MudaCultura類。

public class語言 {0}私人字符串chaveRM =「」;

public string ChaveRM 
{ 
    get { return chaveRM; } 
    set { chaveRM = value; } 
} 

public static string RetornaMensagem(string NomeMensagem) 
{ 
    ResourceManager resx = new ResourceManager(typeof(RM)); 
    return resx.GetString(NomeMensagem, System.Threading.Thread.CurrentThread.CurrentCulture); 
} 

public static void MudaCultura(string cultura) 
{ 
    if (cultura=="pt") 
    { 
     System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt", true); 
    } 

    else if(cultura=="en") 
    { 
     System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en", true); 
    } 

    else if (cultura == "es") 
    { 
     System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es", true); 
    } 
} 

}

回答

0

我創建了一個幫助Nps的解決方案。在每個事件點擊翻譯我的頁面之前,我從我的GridView1重新加載內容。在事件點擊pt-BR翻譯的示例下面。

protected void pt_OnChange(object sender, EventArgs e) 
{ 
    idiom = "pt"; 
    Idioma.MudaCultura(idiom); 
    GridView1.Columns[0].HeaderText = Idioma.RetornaMensagem("idTickets"); 
    GridView1.Columns[1].HeaderText = Idioma.RetornaMensagem("UserName"); 
    GridView1.Columns[2].HeaderText = Idioma.RetornaMensagem("AccessGroup"); 
    GridView1.Columns[3].HeaderText = Idioma.RetornaMensagem("FolderAccess"); 
    GridView1.Columns[4].HeaderText = Idioma.RetornaMensagem("RequestDate"); 
    GridView1.Columns[5].HeaderText = Idioma.RetornaMensagem("SituationDesc"); 
    GridView1.Columns[6].HeaderText = Idioma.RetornaMensagem("Approver"); 
    GridView1.Columns[7].HeaderText = Idioma.RetornaMensagem("ApprovalDate"); 
    GridView1.Columns[8].HeaderText = Idioma.RetornaMensagem("BusinessJustification"); 
    GridView1.Columns[9].HeaderText = Idioma.RetornaMensagem("Server"); 
    GridView1.Columns[10].HeaderText = Idioma.RetornaMensagem("UserRequestor"); 

    var listaTickets = new Tickets().ConsultarTickets(); 
    if (listaTickets != null) 
    { 
     this.GridView1.DataSource = listaTickets; 
     if (listaTickets.Count != 0) 
     { 
      this.GridView1.DataBind(); 
      GridView1.HeaderRow.TableSection = TableRowSection.TableHeader; 
     } 
    } 

} 
1

你應該更新標題後打電話GridView1.DataBind()

+0

Tks!但是,它不起作用!爲了運行良好,我在我的Update in Headers之後調用了所有運行到我的page_load中的行。我在評論中顯示我的解決方案!但是,我必須感謝你,因爲如果你沒有展示你的解決方案,我不能建立我的解決方案。對不起,我的英語... – CaioVJesus89

+0

相反,創建一個包含所有翻譯和綁定代碼的常用方法。此方法將接受「成語」作爲參數。這將有助於正確管理代碼。 – Nps