Lea*_*ves 6 c# asp.net globalization user-controls gridview
我创建了一个网站,有三种语言版本:英语,葡萄牙语和西班牙语.
除了一件事之外,它的一切工作正常:当加载一个强调的单词时,它没有更新BoundField.
以下是在MEMGridView.ascx的gridview中未更新的字段:
<asp:BoundField DataField="Ocupacao" HeaderText="Ocupação" SortExpression="Ocupação" meta:resourcekey="BoundFieldResource9">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
Run Code Online (Sandbox Code Playgroud)
At App_LocalResources是三个具有此值的文件:
当页面第一次加载时,它显示"填充率".然后我将语言改为西班牙语,并展示"Ocupación".如果我返回加载英文页面,它会更新所有字段,除了强调的字段.所以它继续显示"Ocupación"而不是"填充率".
我没有可能发生的事情的线索.
- 更新 - 其他信息 -
MEMGridView是DashBoard.aspx中的UserControl.每当有人更改ddlLanguage(下拉列表)中的语言值或单击"更新"按钮时,都会生成回发.
这是用于更新字段的MEMGridView事件(实际上,它更新除了突出显示的字段之外的所有字段).
public partial class MEMGridView : UserControl
{
...
protected override void FrameworkInitialize()
{
if (!string.IsNullOrEmpty(Request["ddlLanguage"]))
{
string str = Request["ddlLanguage"];
//Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(str);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(str);
}
else
{
string preferredLanguage;
if (Request.QueryString["Language"] != null)
preferredLanguage = Request.QueryString["Language"];
else
preferredLanguage = Request.UserLanguages[0];
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(preferredLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(preferredLanguage);
}
base.FrameworkInitialize();
}
Run Code Online (Sandbox Code Playgroud)
遇到同样的问题。通过用 TemplateField 替换 BoundField 来修复,就像这样:
<asp:TemplateField ...>
<ItemTemplate><%# Eval( "Ocupacao" ) %></ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |