循环访问kentico 8中的自定义资源文件

时间:2014-09-09 10:06:08

标签: c# asp.net localization repeater kentico

我已经构建了一个.aspx模板,其中包含一个下拉列表(无.asp控件)

模板样本:

<select>
    <option selected="selected" value="">Bitte w&auml;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库接收所有条目的方法。

1 个答案:

答案 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