我已经构建了一个.aspx
模板,其中包含一个下拉列表(无.asp控件)。
模板样本:
<select>
<option selected="selected" value="">Bitte wählen</option>
<asp:Repeater ID="countryDropDown" runat="server">
<HeaderTemplate>
<option value="<%--key--%>">
</HeaderTemplate>
<ItemTemplate>
<%--value--%>
</ItemTemplate>
<FooterTemplate>
</option>
</FooterTemplate>
</asp:Repeater>
</select>
此下拉列表应包含所有国家/地区。所有国家/地区都存储在Custom.resex
中,该文件位于特定于Kentico的CMSResoures
文件夹中。
现在我想遍历文件并将国家/地区列表传递给转发器。 我无法为此找到解决方案。
当然,使用Kentico ResHelper.GetString("stringKey")
函数通过密钥很容易获得特定值,但找不到使用Kentico库接收所有条目的方法。
答案 0 :(得分:1)
如果你想以超级简单的方式做到这一点,那么只需注册〜/ CMSFormControls / CountrySelector.ascx中的Country Selecter,就像这样:
它具有与您正在处理的功能相同的功能。
但是,为了将来参考,所有国家/地区都已存储在数据库的CMS_Countries表中。在所有国家/地区填充DataSet会更容易,然后将DataSet指定为转发器的数据源。以下是执行此操作的众多方法之一:
//Set the connection string to the Kentico Database in the web.config to a variable called CMSConnectionString
string CMSConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["CMSConnectionString"].ConnectionString;
//Sets the text of the query we want to execute on the database to a variable called queryText
string queryText = "SELECT * FROM dbo.CMS_Countries";
//Creates a new instance of the SqlDataAdapter object and calls it "adapter".
//We pass in the text of the query we want to executre on the Kentico database, and the connetion string to the Kentico database.
SqlDataAdapter adapter = new SqlDataAdapter(queryText, CMSConnectionString);
//Creates a new instance of the DataSet object and calls it "countries".
DataSet countries = new DataSet();
//Fills the "countries" dataset with the data retrieved by our query on the Kentico database.
adapter.Fill(countries);
//Sets the datasource of the repeater to the dataset that we just created.
repeater.DataSource = countries;
//Binds the datasource to the repeater server control
repeater.DataBind();
最后,如果您必须使用CMS.resx文件,那么您应该结帐。how to populate a datatable with XML。