2014-06-30 25 views
0

我有一個由SqlDataSource填充的asp:DropDownList。 由DropDownList上的每個項目顯示的文本位於SqlDataSource返回的列之一中。標記中的本地化+數據綁定

在aspx頁面:

DataTextField="IceCreamFlavour" 

這工作。我想要做的是使用IceCreamFlavour值作爲資源文件(.resx)的一個關鍵字,它可以將關鍵字與適當的文本匹配(由文化決定)

我該怎麼做databinding + localization in標記?

這個我試過,例如,它不工作:(名稱爲「本土化」並不在當前的背景下存在)

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

回答

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(); 
    } 
} 

所以數據庫包含在(例如)英文文本,以及本地化的文本應用在數據綁定控件之後。