0

我有一个包含 3 个选项习语的网站。

当用户单击某个按钮更改 Idiom 时,我需要将所有 Header 和一些文本更改为我的 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 的课程。

公共类成语{私人字符串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);
    }
}

}

4

2 回答 2

1

您应该GridView1.DataBind()在更新标题后调用。

于 2013-08-07T18:52:11.750 回答
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;
        }
    }

}
于 2013-08-08T14:04:50.800 回答