OGOOOGOG Geschrieben 12. Januar 2010 Geschrieben 12. Januar 2010 Hallo Allersteits, ich habe ne Fragen und zwar: Wie kann ich Checkboxen zur laufzeit erstellen? Problem ist folgendes: Ich hol mir eine unbestimmte anzahl an datensätzen aus einer Datenbank. dann will ich zu jedem datensatz eine checkbox haben, um den datensatz auszuwälen und dan bearbeiten oder löschen zu können. nur leider weiss ich nicht wie ich in auf aspx seiten dynamisch checkboxen erstellen kann. für tipps wäre ich sehr dankbar ogooogog Zitieren
BlackDragon83m Geschrieben 12. Januar 2010 Geschrieben 12. Januar 2010 Hallo auch Ich persönlich finde es mit folgendem Wege "relativ" einfach: 1. Auf der ASP-Seite ein leeres Pannel platzieren -> Dient als "Auffangbecken" für die Checkboxen) 2. Für jeden Datensatz ein Checkbox-Objekt erstellen und die nötigen Eigenschaften setzen (kenne deine datensätze nicht daher wäre z.b. Text, Checked/Unchecked etc sinnvoll weniger sinnvoll) 3. Das Checkbox-Objekt dem Panel hinzufügen per Panel.Controls.Add(Checkboxobjekt) Das ist mal eine grobe Übersicht - Hoffe die hilft weiter sonst einfach melden Zitieren
OGOOOGOG Geschrieben 13. Januar 2010 Autor Geschrieben 13. Januar 2010 Hey BlackDragon83m danke erst mal für deine Antwort. ich werde es mal so versuchen. Das klingt gut verständlich^^ Hast du vllt auch ne Methode, mit der ich die Datensätze schön anzeigen kann. und dann die Checkbox daneben setzen kann. DataGrind habe ich schon mal gemacht, finde ich aber nicht so schön. Ich denk mal es würde auch eleganter gehen. Viele Dank nochmal:) gruß ogooogog Zitieren
BlackDragon83m Geschrieben 14. Januar 2010 Geschrieben 14. Januar 2010 Hi sorry aber ich habs gestern nicht mehr geschafft ... Also wir lassen uns die Datensätze aus der DB als SortedList<string,string>[] zurückliefern. Eine Methode wandelt die Tabellenergebnisse der DB Abfrage dann wie folgt um: Jede SortedList<string,string> in dem Array bildet eine Zeile der Ergebnismenge ab. Der erste String (Key) ist der Spaltenname, der 2. string (Value) der Wert in der DB-Zelle. Hier nun - auf Basis von unserem SortedList[] - eine Methode wie man damit dynamische Controls einbinden kann: foreach (SortedList<string, string> row in dbResult) { string ip = row["IP1"] + "." + row["IP2"] + "." + row["IP3"] + "." + row["IP4"]; Label lbl_ip = new Label(); lbl_ip.Text = ip; TextBox txb_MAC = new TextBox(); TextBox txb_SSID = new TextBox(); txb_MAC.Text = row["mac"]; txb_SSID.Text = row["ssid"]; CheckBox chb_MyBox = new CheckBox(); chb_MyBox.Text = "Soll gelöscht werden?"; chb_MyBox.Checked = false; pnl_Entrys.Controls.Add(lbl_ip); pnl_Entrys.Controls.Add(txb_MAC); pnl_Entrys.Controls.Add(txb_SSID); pnl_Entrys.Controls.Add(chb_MyBox); } [/PHP] Grobe Erklärung zum Ablauf: Jede Zeile des DB Ergebnisses wird durchlaufen. Pro Durchlauf werden dem pnl_Entrys folgende Controls zugefügt: 1x Label mit einer IP 2x Textbox - gefüllt mit MAC und SSID 1x Checkbox mit dem Text "Soll gelöscht werden?" - Nicht angehakt Das ist fiktiver Code - Wir fügen dem Control noch einige Literale mit HTML Code hinzu um das ganze schön zu formatieren. Beispiel: Literale mit </td><td> wenn ganz oben eine Tabelle aufgemacht wird und am Ende eben ein </tr><tr> z.b. dann ist die Anzeige eben als Tabelle oder <br> um Zeilenumbrüche zu erzeugen usw. Hoffe das ist als Beispiel-Code tauglich Edit: Achja der Code ist C# Zitieren
Hahne Geschrieben 14. Januar 2010 Geschrieben 14. Januar 2010 Hi, du musst es nicht unbedingt mit der Funktion myPanel.Controls.Add("myCheckbox"); lösen. Es gibt in ASP.NET ein Control mit dem Namen CheckBoxList. Dieser Liste kannst du ganz einfach neue Checkboxen hinzufügen. Nur so als Tipp am Rande. Kannst dir ja aussuchen wie du es lösen möchtest. Zitieren
OGOOOGOG Geschrieben 19. Januar 2010 Autor Geschrieben 19. Januar 2010 Hey danke für die vielen Tipps klappt ganz gut ich finde die variante mit der checkbox list einfacher danke nochmals für den Tipp. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.