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.




wie befüllt man eine dropdownliste mit werte aus einer anderen liste ?

Unbeantwortet Dieser Beitrag hat 14 Antworten

Ohne Rang
519 Beiträge
donSharepoint erstellt 30 Okt. 2012 11:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hallo ich bin ein .net anfänger und möchte etwas umsetzen ! es klappt auch soweit ganz gut mit ein textfeld..nun möchte ich mein texfeld in ein dropdownliste umändern und stehe vor dem problem das ich die dropdownliste mit werte befüllen muss die von einer andere liste kommen.

hier mein aspx mit der dropdownliste

 

 

 

 

<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>

hier mein ascx.cs

 

 

public void onClick(object sender, System.EventArgs e){

string s = this.DropDownList1.Text;

....

 

 

ich möchte die dropdownliste mit den werte befüllen die aus der liste

SPList list = web.Lists["Authority Selection"]  mit spalte Title kommen.

wie macht man sowas????

danke für eure hilfe

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Okt. 2012 11:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine DropDownList hat eine Items-Auflistung, in die man die Elemente füllen kann. Das können einfache Strings sein, aber man verwendet besser ListItems, die einen Wert und einen agezeigten Text haben. Du kannst dann die ID des Listenelements als Wert und den Title als Text verwenden. Beim Befüllen der DropDownList solltest Du immer auf PostBack prüfen.

if (!Page.IsPostBack) {
 foreach (SPListItem item in list.Items) {
  DropDownList1.Items.Add(new ListItem(item.ID, item["Title"] as string));
 }
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 11:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hi andi.

danke für dein feedback. ehmm..weiss aber immernoch nicht wie ich die liste übergebe?! also wie sage ich hole aus der liste  "authority selection"

bei meinem inputfeld vorher hab ich das mit 

SPList list = web.Lists["Notify Members"] gemacht.

 

 

wie mach ich das jetzt? danke

 

 

 

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Okt. 2012 11:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich verstehe nicht ganz, wo genau Dein Problem liegt. Eine Liste bekommst Du mit dem von Dir selbst gezeigten Code:
SPList list = web.Lists["Listname"];

An die Elemente der Liste kommst Du über deren Items-Eigenschaft:
SPListItemCollection items = list.Items;

Diese Elemente kannst Du z.B. mit foreach durchlaufen (wie oben gezeigt). An die Feldwerte eines Elements kommst Du so:
string title = item["Title"] as string;

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 11:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

genau.

 

habs jetzt so gelöst :

 SPWeb web = SPContext.Current.Web;
            SPList dropDownList = web.Lists["Authority Selection"];

            if (!Page.IsPostBack)
            {
                foreach (SPListItem dropDownItem in dropDownList.Items)
                {
                   this.DropDownList1.Items.Add(new ListItem(dropDownItem["Title"] as string));
                }
            }

 

jetzt muss ich noch  :  this.DropDownList1.Items.Add(new ListItem(dropDownItem["Title"] as string)) in ein String speichern weil ich den Stringwert für mein email funktion brauche.


wie speicher ich die werte in ein String?

so :  string s = this.DropDownList1.Items.Add(new ListItem(dropDownItem["Title"] as string));

geht das nicht

 

Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 12:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hey andi brauche drigend nochmal deine hilfe. komme durcheinder mit den variablen in der foreach schleife.

also ich hab das so umgesetzt allerdings stimmt in der foreachschleife das speichern der werte nicht..irgendwas ist da falsch

 

SPWeb web = SPContext.Current.Web;
            SPList dropDownList = web.Lists["Authority Selection"];
            SPListItemCollection itemDropDown = dropDownList.Items;

            if (!Page.IsPostBack)
            {
                foreach (SPListItem dropDownItem in itemDropDown)
                {
                    this.DropDownList1.dropDownItem.Add(new ListItem(dropDownItem["Title"] as string));
                }

             
            }

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Okt. 2012 12:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du bringst da einiges durcheinander. Versuche es mal in einzelne Schritte, d.h. in mehrere Zeilen aufzuteilen:

SPLIst list = web.Lists["Name"];
SPListItemCollection listItems = list.Items;
if (!Page.IsPostBack) {
 foreach (SPListItem listItem in listItems) {
  string title = listItem["Title"] as string;
  ListItem dropDownItem = new ListItem(title);
  DropDownList1.Items.Add(dropDownItem);
 }
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 12:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ok prima  ! jetzt muss ich nur noch das "DropDownList1.Items.Add(dropDownItem)" in ein String speichern da ich den wert für mein bodyText brauche

den ich dann in  SPUtility.SendEmail() übergeben möchte. wie speicher ich das in ein String ?

danke andi

Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 12:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

kann ich außerhalb der if anweisung das in String umwandeln?

so :

if (!Page.IsPostBack)
            {
                foreach (SPListItem dropDownItem in itemDropDown)
                {
                    string title = dropDownItem["Title"] as string;
                    ListItem dropDownItemLoad = new ListItem(title);
                    DropDownList1.Items.Add(dropDownItemLoad);
                   
                   
                }

               
            }

 string s = DropDownList1.ToString();

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Okt. 2012 12:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was genau möchtest Du denn als String?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 12:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

der aktuelle wert der aus der dropdownliste ausgewählt wird.

Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 30 Okt. 2012 13:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ok denke so oder?

 if (!Page.IsPostBack)
            {
                foreach (SPListItem dropDownItem in itemDropDown)
                {
                    string title = dropDownItem["Title"] as string;
                    ListItem dropDownItemLoad = new ListItem(title);
                    DropDownList1.Items.Add(dropDownItemLoad);
                   
                   
                }

            }

            string s = DropDownList1.Text;

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Okt. 2012 13:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mit DropDownList.Text erhältst Du tatsächlich den derzeit ausgewählten Text. Wenn Du das aber direkt nach dem Befüllen des DropDowns machst, bekommst Du immer den ersten Eintrag. Du mußt dem Benutzer natürlich auch eine Chance geben, den Eintrag zu ändern. Den ausgwählten Wert liest Du dann erst aus, wenn der Benutzer z.B. auf einen Button klickt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
519 Beiträge
donSharepoint Als Antwort am 2 Nov. 2012 09:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hi andi !

deine Lösung war schon ganz gut aber irgendwie werden die items nicht eingelesen in meine dropdownliste.

also meine komplette lösung sieht so aus...vielleicht siehst du den fehler .

 

meine asp-seite hier besteht aus einer dropdownloadliste mit dem namen "DropDownList1" und einem Button mit name "onClick"

 

meine code dazu sieht so aus:

 

 protected void Page_Load(object sender, EventArgs e)

        {

            SPWeb web = SPContext.Current.Web;

            SPList dropDownList = web.Lists["Authority Selection"];

            SPListItemCollection itemDropDown = dropDownList.Items;

 

            if (!Page.IsPostBack)

            {

                foreach (SPListItem dropDownItem in itemDropDown)

                {

                    string title = dropDownItem["Title"] as string;

                    ListItem dropDownItemLoad = new ListItem(title);

                    DropDownList1.Items.Add(dropDownItemLoad);

                }

            }

  }

 

 


        public void onClick(object sender, System.EventArgs e)

        {

            SPWeb web = SPContext.Current.Web;

      
        string s = DropDownList1.Text;

 

            //string s = this.DropDownList1.Text;

            //SPSite site = SPContext.Current.Site;

            //string appEmail = site.WebApplication.OutboundMailSenderAddress;

            //SPWeb web = SPContext.Current.Web;

            SPList list = web.Lists["Notify Members"];

            SPListItemCollection items = list.Items;

            string an = string.Empty;

 

            foreach (SPListItem item in items)

            {

 

                an = (string.IsNullOrEmpty(an)) ? item["Notify Adress"].ToString() : an + "; " + item["Notify Adress"].ToString();

           }

 

            StringDictionary headers = new StringDictionary();

            headers.Add("from", "Inside/Alarmseite");

            headers.Add("to", an);

            headers.Add("subject", "Es brennt");

 

            string bodyText = s;

 

            bool sucess = SPUtility.SendEmail(web, headers, bodyText);

        }

    }

 

ich hab mir gedacht das ich in der page_load funktion der sowas wie ein konstruktor ist mein dropdownliste füllt mit den titeln aus der liste "Authority Selection"  und die onclickfunktion den text der aus dropdownliste ausgewählt wurde dann über die mail funktion wegschickt.

 

z.Z bekomme ich beim ausführen des webparts immer die meldung :

error
There can be only one 'control' directive

 

 

hast du ne idee? dankeeeee

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Nov. 2012 15:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also ich kann auf den ersten Blick keinen Fehler erkennen. Hast Du Dir das mal im Debugger angeschaut? Evtl. funktioniert auch etwas ganz anderes nicht. Die Fehlermeldung deutet auch darauf hin. Du wirst das selbst debuggen müssen...

Viele Grüße
Andi
af @ evocom de
Blog