SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Controls dynamisch erstellen / hinzufügen

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
10 Beiträge
island erstellt 13 Jan. 2010 16:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe gerade ein Problem mit dem Webpart, das ich schriebe. Und zwar möchte ich ein (zur Zeit des Ladens des Webparts) unbekannte Anzahl Textfelder hinzufügen.

Beispiel:

- Das Webpart wird geladen und hat eine Textbox und einen Button.

- Der Benutzer gibt in der Textbox den Namen einer Liste an und klickt einen Button

- Es werden Textboxen angezeigt, für jede Spalte der Liste eine, in jeder Textbox steht der Name der Spalte

- Der Benutzer gibt neue Namen für die Spalten in die Textboxen ein und klickt ok

Kann es sein dass bei jedem Buttonklick die Klassenvariablen meiner Webpartklasse "zurückgesetzt" werden?

 

Mein Ansatz wäre (wenn es nicht möglich ist, nachträglich Controls hinzuzufügen) den Namen der Liste bei einem Buttonklick "zu übergeben", denn wenn der Button geklickt wird könnte ich in CreateChildControls auf Namen der Liste abfragen und dem entsprechenden Spaltenauslesen und Textboxen und Button hinzufügen. Den ersten "Durchgang" bzw. die Initialisierung könnte man dann dadurch erkennen, dass kein Listenname "übergeben" wurde. Ich weiss nur nicht ob und wie ich einen String an den "Nächsten Aufruf von createChildControls übergeben kann"...

Ich hoffe ich konnte mich einigermaßen Verständlich ausdrücken, danke schonmal im Vorraus.

 

Gruß IsLand

 

// Ach ja, jetzt fiel mir der Begriff für meine etwas holprige Erklärung ein, und zwar meinte ich beim Postback einen String zu übergeben

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Jan. 2010 08:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich fürchte, Du mußt Dich noch etwas mehr mit ASP.NET im Allgemeinen und mit dem Page Lifecycle im Besonderen beschäftigen.

Du kannst Klassenvariablen, die Du über Postbacks hinweg brauchst, z.B. im ViewState ablegen:
private string ListName {
get {
if (ViewState["ListName"] == null) {
return string.Empty;
} else {
return ViewState[ListName"];
}
}
set {
ViewState["ListName] = value;
}
}

In CreateChildControls erstellst Du nur einen Container für die variablen Textboxen. In OnPreRender prüfst Du, ob es einen ListName gibt und falls ja erstellst Du die Textboxen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
island Als Antwort am 14 Jan. 2010 09:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Besten Dank, so ein Tipp hatte ich mir erhofft :-D

Ich muss zugeben, mit .NET habe ich mich wirklich noch nicht sonderlich beschäftigt, ich dachte eher an ein learning by doing ;-) Aber dann werde ich mir wohl doch das eine oder andere Buch zur Hand nehmen.

Danke nochmal für den Tip

 

Gruß, IsLand

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Jan. 2010 09:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Grundlagen muß man natürlich schon kennen. Der Rest ist dann wirklich learning by doing :-)
Viel Erfolg

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
10 Beiträge
island Als Antwort am 14 Jan. 2010 14:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi ich bins nochmal ^^

Also ich denke nicht dass ich auf dem Weg weiter komme, wenn ich das richtig sehe, wird der Eventhandler des Buttons erst ausgelöst wenn schon alles zu spät ist (also nach OnPreRender, nach createchildcontrols usw), das heisst ja, wenn ich mit diesem Button im ViewState Daten speichern möchte um nach dem Postback darauf zuzugreifen, habe ich die Daten erst, wenn bereits alle Controls erstellt wurden!?

Muss ich mir wohl was anderes überlegen... Trotzdem nochmal danke :-)

 

Gruß, IsLand

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Jan. 2010 15:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das stimmt nicht und das meinte ich damit, daß Du Dich mit dem Page-Lifecycle beschäftigen solltest. Hier nur ein ganz kurzer Überblick:
http://www.moss2007.be/blogs/vandest/archive/2007/07/24/asp-net-webpart-life-cycle-reminder.aspx

Viele Grüße
Andi
af @ evocom de
Blog