2009-06-21 7 views
1

私は、ASP.NETドロップダウンリストまたはテラリクRadComboBoxに状態を取り込むより一般的なメソッドを作成しようとしています。メソッドのパラメータとしてコントロールを渡したいと思います。私はすべての状態を保持するDataTableを持っています。これはループします(下を参照)。これはTelerik RadComboBoxに適用したいので、最初のパラメータを変更する必要があります。 ListItem - Telerik RadComboBoxの場合、新しいRadComboBoxItemです。これどうやってするの?ASP DDLまたはTelerikコントロールを返します

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

答えて

0

私はtelerikドキュメント&を見上げ行うための一般的な方法があるようには思えない - あなたがやろうとしているもの。

可能であれば、データバインドを使用してください(DataBindingを呼び出すDataSource &を設定してください)。
注:私はそれを試していません。しかし、私はそれが両方によって支持されるべきだと思います。

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 
} 
+0

これは、私がddlStates.Items.Clear()のようなことをしようとするとうまくいくようです。 (「コードを進める」領域では、「アイテム」はその時点でどのタイプのコントロールであるかわからないため、プロパティであることを認識しません - コンパイル時エラーが発生します。 –

+0

sorry ddl。 Items.Clear(); –

+0

申し訳ありませんが、あなたは完全に正しいです!これを書いている間、私は眠っていました。彼らが共有する基底クラスにはItemsというプロパティがないので、動作しません。 2つの定義済みのメソッドを作成することです。最初はradComboを受け取り、もう1つはdropDownを受け取ります。 –

関連する問題