【问题标题】:First Item on Dropdownlist in blank下拉列表中的第一项空白
【发布时间】:2009-07-02 16:32:49
【问题描述】:

如何将 DropDownList 上的第一项放在空白中?在 VB 中类似于 DropDownList.index[0] = ""; 我这样做了:

string StrConn = ConfigurationManager.ConnectionStrings["connSql"].ConnectionString;
    SqlConnection conn = new SqlConnection(StrConn);

    conn.Open();

    SqlDataReader dr;

    string sql;
    sql = @"Select Nome From DanielPessoas";

    SqlCommand cmd = new SqlCommand(sql, conn);
    dr = cmd.ExecuteReader();

    DropDownList1.DataSource = dr;
    DropDownList1.DataTextField = "Nome";
    DropDownList1.DataValueField = "Nome";
    DropDownList1.DataBind(); 

【问题讨论】:

    标签: asp.net sql-server ado.net


    【解决方案1】:

    在调用 DataBind 之后,添加此代码。

    DropDownList1.Items.Insert(0, new ListItem(string.Empty, string.Empty));
    

    【讨论】:

    • 打败我。我唯一建议的是为空白选择设置某种值,以便更容易验证或选择值检查。
    • 如果你使用 string.empty/"" 作为值,那么你可以使用RequiredFieldValidator。但是,我建议在文本字段中添加一些内容,例如“选择...”
    【解决方案2】:

    如果您将AppendDataBoundItems属性设置为true,您可以在aspx文件中定义空项目。

    <asp:DropDownList ID="ddlPersons" runat="server" AppendDataBoundItems="true" DataValueField="ID" DataTextField="Name">
        <asp:ListItem> -- please select person -- </asp:ListItem>
    </asp:DropDownList>
    

    然后您可以在代码隐藏中从数据库中数据绑定项目:

    ddlPersons.DataSource = personsList;
    ddlPersons.DataBind();
    

    我把这个“空项”看作是展示/UI,所以我喜欢把它放在aspx中。它还使代码隐藏更简单。

    【讨论】:

      【解决方案3】:

      做这样的事情:这是一个简单的例子

      <asp:DropDownList ID="ddlFruits" runat="server">
      
              <asp:ListItem Value="1" Text="Oranges"></asp:ListItem>
              <asp:ListItem Value="2" Text="Apples"></asp:ListItem>
              <asp:ListItem Value="3" Text="Grapes"></asp:ListItem>
              <asp:ListItem Value="4" Text="Mangoes"></asp:ListItem>
          </asp:DropDownList>
      

      而在后面的代码中

      ddlFruits.Items.Insert(0, new ListItem(string.Empty, "0"));
      

      【讨论】:

        【解决方案4】:

        你可以这样做:

        dropdownlist1.Items.Insert(0, new ListItem("Select here...", string.Empty));
        

        【讨论】:

          【解决方案5】:

          你可以在 SQL 中做到这一点:

          sql = @"Select Nome From DanielPessoas UNION ALL Select '' Order by Nome";
          

          【讨论】:

          • 这是个坏主意,您不想更改 SQL 代码来为 UI 目的添加一个空项。
          【解决方案6】:

          我们可以在 C# 的前端做到这一点

          @Html.DropDownList("sample",new SelectList(DropDownList1, "DataTextField", "DataValueField "), "Select")
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-09-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-24
            • 2012-03-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多