Laden...

Frage zu DropDownList und Postbacks

Erstellt von tom-cat vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.177 Views
T
tom-cat Themenstarter:in
77 Beiträge seit 2010
vor 13 Jahren
Frage zu DropDownList und Postbacks

Hallo zusammen,

ich brauche mal kurz euren Rat bei DropDownLists und einem Postback.

Ich öffne eine Seite und habe ich Page_Load eine Abfrage auf die Datenbank die mir die DDL befüllt. (Klappt super)
Dann wähle ich in der DDL einen Eintrag aus und drücke auf einen Button. Danach erscheint der gewählte Eintrag in meinem Lable.
Das klappt aber nur, wenn ich nicht im Page_Load die DDL befüllen lasse sondern die Eintrage manuell in die DDL schreibe.

Wie kann ich nun, wenn ich die DDL List im Page_Load befüllen lasse den gewählten Eintrag im Lable darstellen und die DDL auf den gewählten eintrag stehen lassen ?!

Gruß
Tom

699 Beiträge seit 2007
vor 13 Jahren

Hallo tom-cat,

Du musst im Page_Load auf einen Postback prüfen.


if (!IsPostBack)
{
      // Hier das befüllen der DropDownList einfügen.
}

Hier noch die passende Seite bei MSDN Page.IsPostBack-Eigenschaft

Grüße Stephan

691 Beiträge seit 2007
vor 13 Jahren

Dann wähle ich in der DDL einen Eintrag aus und drücke auf einen Button

Alternativ, falls du den Query wirklich nur in Abhängigkeit von dem ausgewählten Wert hast, die AutoPostBack Property auf true setzen und im OnSelectedIndexChanged Event die Daten neu binden

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

T
tom-cat Themenstarter:in
77 Beiträge seit 2010
vor 13 Jahren

Das komisch an der Nummer ist ja, wenn ich ein ganze leeres Projekt nehme und folgendes mache:

protected void Button1_Click(object sender, EventArgs e)
        {
            Label1.Text = DropDownList1.SelectedItem.Text;
        }

Dann wird das Lable sauber gesetzt, mache ich das in meinem Projekt wird das nicht so gesetzt. Zudem nur als Hinweis: Ich arbeite mit Mastern... kann das an dem Tag der <Form> liegen ?!

Hier ist der Code wo es nicht klappt:

protected void Page_Load(object sender, EventArgs e)
        {
            // Sessions laden
            string _VForeignInvoiceID = base.Request.Params.GetValues("fid")[0];
            string _VConnString = (string)(Session["ConnString"]);
            string _VUser = (string)(Session["Username"]);

            // Visibel der Daten
            PanelSetAllInvoice.Visible = false;

            BuildInvoiceTable(_VConnString, _VForeignInvoiceID);
            BuildDDLStatus(_VConnString);

        }

        private void BuildDDLStatus(string ConnString)
        {
            try
            {

                string sqlQuery = "select * from SPStatus";
                SqlConnection objCon1 = new SqlConnection(ConnString);
                SqlCommand objCommand1 = new SqlCommand(sqlQuery, objCon1);
                objCon1.Open();
                SqlDataReader dr = objCommand1.ExecuteReader();

                DDLStatus.DataSource = dr;
                DDLStatus.DataTextField = "StatusName";
                DDLStatus.DataValueField = "UID";
                DDLStatus.DataBind();
                dr.Close();
                objCon1.Close();
            }

            catch (Exception e1)
            {
                lbError.Text = "Fehler bei Statusdaten holen: " + e1;
            }
        }

        protected void btnSaveStatus_Click(object sender, EventArgs e)
        {
            // Status in die Datenbank schreiben
            lbError.Text = DDLStatus.SelectedItem.Text;
        }

Ich mache dort ja nichts anderes als dem Lable das Item.Text zuweisen ... klappt aber nicht 😦

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

hast Du gesehen was Stipo geschrieben hat, bezügl. IsPostBack?

Ich kann das bei Dir nirgends sehen, daß Du nur im Nicht-PostBack-Fall bindest.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

458 Beiträge seit 2007
vor 13 Jahren

Was hast du an

if (!IsPostBack)
{
      // Hier das befüllen der DropDownList einfügen.
} 

nicht verstanden?

btw: Die DB vom GUI aus ansprechen ist mehr als haesslich.

be the hammer, not the nail!