asp.net下拉列表 - 在db值之前添加空行

the*_*ner 31 asp.net sqldatasource dropdownbox drop-down-menu

在我的页面上,我有一个DropDownList用数据库值填充的SqlDataSource(参见下面的代码).

如何在值之前添加自己的文本或空行?

<asp:DropDownList ID="drpClient" runat="server" Width="200px" 
    AutoPostBack="True" DataSourceID="dsClients" DataTextField="name" 
        DataValueField="client_id">
</asp:DropDownList>
<asp:SqlDataSource ID="dsClients" runat="server" 
    ConnectionString="my_connection_string" 
    ProviderName="System.Data.SqlClient" 
    SelectCommand="SELECT [client_id], [name] FROM [clients]">
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

谢谢.

PS你建议使用SqlDataSource或者更好地填充另一种方式吗?

Jos*_*lio 53

您只需在DropDownList标记内添加ListItem即可.之后将附加DataSource中的所有值.

<asp:DropDownList ID="drpClient" runat="server" Width="200px" 
          AutoPostBack="True" DataSourceID="dsClients" DataTextField="name" 
          DataValueField="client_id" AppendDataBoundItems="true">
   <asp:ListItem>-- pick one --</asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

  • 你必须告诉它'追加'而不是'替换' (6认同)

Joe*_*orn 21

<asp:DropDownList ID="drpClient" runat="server" Width="200px" 
        AutoPostBack="True" DataSourceID="dsClients" DataTextField="name" 
        DataValueField="client_id" AppendDataBoundItems="True">

    <asp:ListItem Text="" Value="" />
 </asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

这很容易错过,所以不要忘记AppendDataBoundItems我添加的属性.


Jus*_*anz 6

我没有真正测试过这个,但我假设你可以在下拉列表中绑定后添加一个项目.您可以将此事件添加到您要添加此空框的任何下拉列表中.

protected void DropDownList_DataBound(object sender, EventArgs e)
    {
        DropDownList ddl = (DropDownList)sender;
        ListItem emptyItem = new ListItem("", "");
        ddl.Items.Insert(0, emptyItem);
    }
Run Code Online (Sandbox Code Playgroud)

  • 贾斯汀 - 这种添加线的方式的问题是它仍然可以选择.如果添加空白行以进行分离,则用户不应选择该行. (2认同)