【问题标题】:Return ASP DDL or Telerik control返回 ASP DDL 或 Telerik 控件
【发布时间】:2009-06-21 20:34:21
【问题描述】:

我正在尝试编写一个更通用的方法来填充 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()));
            }
        }
    }
}  

【问题讨论】:

    标签: asp.net telerik


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      由于 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
      }
      

      【讨论】:

      • 这似乎可行,但是,当我尝试做类似 ddlStates.Items.Clear(); (在“继续执行您的代码”区域 - 它无法识别“Items”是一个属性,因为它不知道此时它是什么类型的控件 - 我收到编译时错误。
      • 对不起,你完全正确!我在写这篇文章的时候正在睡觉。它不会起作用,因为它们共享的基类没有名为 Items 的属性。目前我能看到的最简单的解决方案是创建 2 个预定义的方法,第一个接受 radCombo,另一个接受 dropDown。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多