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
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
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
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 😦
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
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!