1

我正在尝试编写一个更通用的方法来填充 ASP.NET 下拉列表或带有状态的 Telerik RadComboBox。我想将控件作为参数传递给方法。我有一个包含所有状态的 DataTable,我循环遍历它(见下文) - 我想让它适用于 Telerik RadComboBox - 所以我需要更改第一个参数,以及我插入新的部分ListItem - 对于 Telerik RadComboBox,它是新的 RadComboBoxItem。我怎样才能做到这一点?

public void PopulateStates(DropDownList ddlStates, string country)
{
    ddlStates.Items.Clear();
    DataLookup dl = new DataLookup();
    DataTable dt = dl.GetStatesByCountry(country);
    if (dt != null)
    {
        if (dt.Rows.Count > 0)
        {
            ddlStates.Items.Insert(0, new ListItem(""));
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ddlStates.Items.Add(new ListItem(dt.Rows[i]["STCD_Descr"].ToString(),
                    dt.Rows[i]["STCD_State_CD"].ToString()));
            }
        }
    }
}  
4

2 回答 2

0

由于 ListBox 和 RadComboBox 除了“Control”类之外没有公共类,您需要检查实际类型。

下面的代码怎么样?

public void PopulateStates(Control ddl, string country)
{
    object listItem = new object();
    switch (ddl.GetType().Name)
    {
        case "RadComboBox":
            listItem = listItem as RadComboBoxItem;
            ddl = ddl as RadComboBox;
            break;
        case "ListBox":
            listItem = listItem as ListItem;
            ddl = ddl as ListBox;
            break;
        default:
            return;
    }

    // proceed with your code
}
于 2009-06-21T21:30:50.707 回答
0

我查阅了 Telerik 文档,似乎没有常见的做法——你正在尝试做的事情。

如果可能,请尝试使用数据绑定(设置 DataSource 并调用 DataBind)。
注意:我没试过。但我认为这应该得到双方的支持。

于 2009-06-21T21:19:52.273 回答