2008-11-10 11 views

Antwort

9

So fügen Sie einen Wert am Anfang der Liste hinzu. Es kann eine leere Zeichenfolge oder ein Text sein.

<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False"> 
    <asp:ListItem Value="-1"> 
     -- Choose a Category -- 
    </asp:ListItem>   
</asp:DropDownList> 

Achten Sie darauf, die AppendDataBoundItems der DropDownList = True festzulegen.

+0

Warum fügen Sie nicht, dass die Vorschläge zu Ihrer Beispielcode für Klarheit? – Keltex

+0

Danke für den Vorschlag, Keltex. Ich dachte, meine ursprüngliche Version betonte den Punkt, dass das Attribut geändert werden musste, aber offensichtlich nicht. – DOK

+0

Wie sich herausstellt, fügt nur das Setzen von AppendDataBoundItems auf true eine leere Option am Anfang hinzu. Wie wenn es standardmäßig da war oder was. Wenn ich ein asp: ListItem hinzufüge, bekomme ich 2 leere Optionen. Wie auch immer, deine Lösung ist cool, danke. – jansokoly

0

würde ich eine Erweiterungsmethode auf IEnumerable<string> bereitzustellen, die ein Element am Anfang der Liste vorangestellt:

public static IEnumerable<string> Prepend(this IEnumerable<string> data, string item) 
    { 
     return new string[] { item == null ? string.Empty : item }.Union(data); 
    } 

Seine Art von Linq-y, da sie die Linq-Erweiterungsmethode Union verwendet. Es ist ein wenig sauberer als dies zu tun:

var result = new string[]{string.Empty}.Union(from x in data select x.ToString()); 
1

Markup:

<asp:DropDownList ID="ddlQualQuestion" runat="server" DataSourceID="sdsQualQuestion" DataTextField="ShortQuestionText" DataValueField="QualificationQuestionKey" AutoPostBack="true" OnSelectedIndexChanged="ddlQualQuestion_SelectedIndexChanged" OnDataBound="ddlQualQuestion_DataBound" />; 

-Code hinter:

protected void ddlQualQuestion_DataBound(object sender, EventArgs e) 
{ 
    ddlQualQuestion.Items.Insert(0, new ListItem("", "0")); 
} 
1

Unter der Lösung DOK zur Verfügung gestellt:

<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False"> 
    <asp:ListItem Value="-1"> 
     -- Choose a Category -- 
    </asp:ListItem>   
</asp:DropDownList> 

Addtionally, wenn Sie möchten den Benutzer nicht zwingen eine Auswahl treffen Sie eine Methode zum LinqDataSource Ihrer Gridview hinzufügen:

OnSelecting="myGridview_Selecting" 

Fügen Sie Code hinter wie folgt aus:

protected void myGridview_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    if (categories.SelectedValue == "-1") 
    { 
     e.WhereParameters.Remove("CategoryID"); 
    } 
} 
Verwandte Themen