2008-11-10 21 views

cevap

9

İşte listenin en üstünde bir değer katmak için nasıl. Boş bir dize veya bir metin olabilir.

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

Doğru = DropDownList adlı AppendDataBoundItems ayarlamayı unutmayın. o linq uzantısı yöntemi Birliği kullandığından, linq-y

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

Onun tür:

+0

Neden netlik için örnek kod bu öneriyi katmayan? – Keltex

+0

Öneri için teşekkürler, Keltex. Orijinal versiyonumun, özniteliğin değiştirilmesi gerektiği noktasını vurguladığını düşündüm, ama açıkçası öyle değildi. – DOK

+0

Sonuç olarak, AppendDataBoundItems değerini true olarak ayarlamak başlangıçta boş bir seçenek ekler. Varsayım ya da ne olduğu gibi. Bir asp: ListItem eklerseniz, 2 boş seçenek alırım. Her neyse, çözümün harika, teşekkürler. – jansokoly

0

Ben listenin başına bir öğe de başa IEnumerable<string> üzerinde bir uzantısı yöntem sağlar ederim. Bunu yaparken daha Onun biraz daha temiz:

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

Biçimlendirme:

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

Kod arkasında: eğer

<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:

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

DOK sağlanan çözüm çıkarak kullanıcıyı zorlamak istemezsiniz Bir seçenek, GridView LinqDataSource için bir yöntem ekleyebilirsiniz yapmak: Böyle arkasında

OnSelecting="myGridview_Selecting" 

Ekleme kodu:

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