Gibt es eine elegante Möglichkeit, einer DropDownList, die mit einer LinqDataSource verbunden ist, eine leere Option hinzuzufügen?DropDownList mit LinqDataSource und eine leere Option
6
A
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
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
- 1. asp.net MVC Dropdownlist-Option
- 2. Linqdatasource und relationales Datenproblem
- 3. yii2 Option Label in Dropdownlist
- 4. wie leere Zeile in Dropdownlist
- 5. Javascript - Erstellen Sie mit Dropdownlist-Wert und Option differents
- 6. Wie extrahiere ich zusätzliche Daten von LinqDataSource?
- 7. asp.net Dropdownlist - leere Zeile hinzufügen, bevor db
- 8. Leere Option auswählen #ngValue
- 9. PHP get dropdownlist Option auswählen Wert
- 10. Standardmäßige leere Option entfernen ----- mit leer = True
- 11. LinqDataSource Query-Hilfe
- 12. wählen Sie die Option Dropdownlist mit Onclick Funktionstaste Ändern
- 13. onChange und onSelect in Dropdownlist
- 14. Verwenden von LinqDataSource mit SELECT-Anweisung
- 15. Gesamtzahl der Zeilen im GridView-Steuerelement mit LinqDataSource und Paging
- 16. LinqDataSource von separatem DataContext aktualisieren
- 17. Angular JS Entfernen Sie leere Option von Option auswählen
- 18. Dropdownlist, Listitem und SelectedItem
- 19. Standard Option verschwindet nach Auswahl nicht leere Option
- 20. PHP FILEINFO_MIME Option gibt leere Zeichenfolge
- 21. Wie Hintergrund-Bild auf die erste Option einer Dropdownlist
- 22. scala - Min/Max mit Option [T] für möglicherweise leere Seq?
- 23. DropDownList mit Firefox und ASP.NET MVC
- 24. Dropdownlist und Viewdata
- 25. C# - Dumping eine Liste mit einem Dropdownlist
- 26. Angularjs: Wie man eine leere Option in select bei der Verwendung von ng-option einfügt
- 27. jQuery UL mit LI von DropDownList und Vice Versa anhängen
- 28. Caching ListView-Daten eine praktikable Option?
- 29. Erstellen DropDownList mit Iterationsschleife
- 30. UpdatePanel mit mehreren DropDownList
Warum fügen Sie nicht, dass die Vorschläge zu Ihrer Beispielcode für Klarheit? – Keltex
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
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