Binden einer dropdownlist und dann hinzufügen ein neues listitem
Ich habe eine DropDownList
die ich initialisieren in eine Funktion namens CreateChildControls
vor dem hinzufügen der Controls
Sammlungen. Ich überschreiben dann die Render()
Methode und dann machen die DropDownList
. Die web-Teil erbt von System.Web.UI.WebControls.WebParts.WebPart
.
Ich Binde die DropDownList
in meinem web-Teil wie dieses:
private void BindClientTypes()
{
DataTable dt = DB.GetAllClientTypes();
if (dt == null)
{
ltGlobalErrorMsg.Text = GlobalErrorMessage;
ltGlobalErrorMsg.Visible = true;
}
else
{
ddlClient.DataSource = dt;
ddlClient.DataValueField = "ID";
ddlClient.DataTextField = "Name";
ddlClient.DataBind();
ddlClient.Items.Insert(0, PleaseSelectItem);
}
}
Wenn ich versuchen, die SelectedIndex
des DropDownList
nach dem Aufruf DataBind
, bekomme ich eine Fehlermeldung die sagt das Steuerelement können nicht mehrere ausgewählte Elemente.
Code funktioniert einwandfrei, und ich kann die SelectedIndex
nachdem die Daten binden, wenn ich diese Zeile auskommentieren:
ddlClient.Items.Insert(0, PleaseSelectItem);
Kann mir jemand erklären, warum das nicht funktionieren würde?
Dank.
InformationsquelleAutor iJK | 2009-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die "selected" Eigenschaft, die Sie festlegen, dass ListItem Instanz also, wenn Sie mehr ListItems, die Sie wiederverwenden, dann werden Sie alle den gleichen Wert erhalten, das ist wahrscheinlich das Problem verursacht, die Sie erleben.
Um das problem zu veranschaulichen finden Sie in diesem Beispiel mit 2 dropdownlists:
Einstellung
ddlTest2
's ausgewählte Wert legt ddlTest so gut, da Sie die gleichen Gegenstände-Liste. Wenn Sie diese MüheddlTest
undddlTest2
haben genau die gleichen gewählten Wert, obwohl nurddlTest2
gesetzt wurde.Oh, das macht Sinn. Dank
InformationsquelleAutor Kelsey
Wo ist PleaseSelectItem erklärt? Wenn Sie fügen Sie die gleiche Instanz von listitem-zu viele dropdownlists, haften Sie bekommen dieses problem.
InformationsquelleAutor Paddy