2009-06-21 7 views
1

Ich versuche, eine allgemeinere Methode zu schreiben, die entweder eine ASP.NET Dropdown-Liste oder eine Telerik RadComboBox mit Status auffüllen wird. Ich möchte das Steuerelement als Parameter an die Methode übergeben. Ich habe eine DataTable, die alle Zustände enthält, die ich durchlaufen habe (siehe unten) - ich möchte dies auf eine Telerik RadComboBox anwenden - also muss ich den ersten Parameter ändern, und auch den Teil, wo ich einen neuen einfüge ListItem - für Telerik RadComboBox ist es neues RadComboBoxItem. Wie kann ich das machen?ASP DDL oder Telerik Steuerelement zurückgeben

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

Antwort

0

sah ich die telerik Dokumentation bis & es nicht üblich Art und Weise zu tun zu sein scheint - was Sie zu tun versuchen.

Wenn es möglich ist, verwenden Sie die Datenbindung (Einstellung der DataSource & aufrufen DataBind).
Hinweis: Ich habe es nicht versucht. Aber ich denke, das sollte von beiden unterstützt werden.

0

Da ListBox und RadComboBox keine gemeinsamen Klassen außer der "Control" -Klasse haben, müssen Sie den tatsächlichen Typ überprüfen.

Wie wäre es mit dem folgenden Code?

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

Dies scheint wie es funktionieren würde, jedoch wenn ich versuche, etwas wie ddlStates.Items.Clear(); (im Bereich "mit Ihrem Code fortfahren" - es erkennt nicht, dass "Elemente" eine Eigenschaft ist, da es nicht weiß, welche Art von Steuerelement es an diesem Punkt ist - ich bekomme einen Kompilierzeitfehler. –

+0

sorry ddl. Items.Clear(); –

+0

Entschuldigung, Sie haben vollkommen recht! Ich habe geschlafen, während ich das geschrieben habe. Es wird nicht funktionieren, weil die Basisklasse, die sie teilen, keine Eigenschaft Items hat. Die einfachste Lösung, die ich im Moment sehen kann erstellt zwei vordefinierte Methoden, die zuerst radCombo und die andere dropDown akzeptieren. –

Verwandte Themen