我有一个由SqlDataSource填充的asp:DropDownList。 DropDownList上每个项目显示的文本位于SqlDataSource返回的列之一中。
在aspx页面中:
DataTextField="IceCreamFlavour"
这很有效。我想要做的是使用IceCreamFlavour值作为资源文件(.resx)的关键字,它将匹配相应文本的密钥(由文化确定)
如何在标记中进行数据绑定+本地化?
我试过这个例子,它不起作用:(名称'本地化'在当前上下文中不存在)
DataTextField='<%# Resources:Localization, Eval("IceCreamFlavour") %>'
答案 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();
}
}
因此,数据库包含(例如)英语中的文本,并且在对控件进行数据绑定后立即应用本地化文本。