标记中的本地化+数据绑定

时间:2014-06-30 15:59:23

标签: asp.net

我有一个由SqlDataSource填充的asp:DropDownList。 DropDownList上每个项目显示的文本位于SqlDataSource返回的列之一中。

在aspx页面中:

DataTextField="IceCreamFlavour"

这很有效。我想要做的是使用IceCreamFlavour值作为资源文件(.resx)的关键字,它将匹配相应文本的密钥(由文化确定)

如何在标记中进行数据绑定+本地化?

我试过这个例子,它不起作用:(名称'本地化'在当前上下文中不存在)

DataTextField='<%# Resources:Localization, Eval("IceCreamFlavour") %>'

1 个答案:

答案 0 :(得分:1)

好的,所以这不可能完全通过标记来实现。我做了以下事情:

标记中的

<asp:DropDownList ID="flavourDDList" runat="server"
  DataSourceID="flavourDataSource" DataValueField="flavourID" DataTextField="flavourText"
  OnDataBound="SetLocalizedText"
</asp:DropDownList>
代码隐藏中的

protected void SetLocalizedText(Object sender, EventArgs e)
{
  foreach (ListItem item in ((DropDownList)sender).Items)
  {
    object localizedText = HttpContext.GetGlobalResourceObject("Localization", item.Text);
    if (localizedText != null)
      item.Text = localizedText.ToString();
  }
}

因此,数据库包含(例如)英语中的文本,并且在对控件进行数据绑定后立即应用本地化文本。