asp.net下拉列表sql表中不存在的默认值

时间:2014-12-29 19:01:52

标签: c# asp.net sql-server ado.net asp.net-4.5

这是我在本网站上的第一个问题

我有一个带有下拉列表的Web表单,该表单正在从我的数据库填充,即sql-server 2012.

我的表格中包含了像genderID和genderName这样的值,它会填充下拉列表,但我还想在页面加载事件触发“选择性别”时显示默认值。

我可以在数据库中添加此值以显示在下拉列表中,但这不是完美的解决方案,因为这意味着我已经在sql server中输入了一个不是有效数据的数据。如何在下拉列表中显示此默认值,该值在sql server表中确实不存在。

我的代码背后:

using(SqlConnection con = new SqlConnection(cs))
{

        using(SqlCommand cmd = new SqlCommand("select * from dbo.Gender", con))
        { 
            con.Open();
            DropDownList1.DataSource =  cmd.ExecuteReader();
            DropDownList1.DataTextField = "GenderName";
            DropDownList1.DataValueField = "ID";
            DropDownList1.DataBind();
        }
    }

页面加载时,应在下拉列表中显示“选择性别”。

4 个答案:

答案 0 :(得分:2)

您无需在数据库中添加条目以在下拉列表中显示该默认值。您可以简单地初始化ListItem对象并将其插入索引0的下拉列表中。

请记住,您的下拉列表是ListItem对象的集合,因此初始化ListItem类型的对象并将其添加到下拉列表中。

像......一样......

using(SqlConnection con = new SqlConnection(cs))
{
    using(SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Gender", con))
    { 
        con.Open();
        DropDownList1.DataSource =  cmd.ExecuteReader();
        DropDownList1.DataTextField = "GenderName";
        DropDownList1.DataValueField = "ID";
        DropDownList1.DataBind();

        ListItem li = new ListItem("Select Gender", "-1");
        DropDownList1.Items.Insert(0, li);
    }
} 

答案 1 :(得分:1)

数据绑定到下拉列表后,请执行以下操作:

DropDownList1.Items.Insert(0, new ListItem("Select gender","")

答案 2 :(得分:0)

绑定后,这样的东西会起作用:

DropDownList1.Items.Insert(0, new ListItem("Select Gender","-1")

答案 3 :(得分:0)

另一个选择是在select语句中使用UNION ALL添加项目。

以下是示例:

using(SqlConnection con = new SqlConnection(cs))
{
    using(SqlCommand cmd = new SqlCommand("select 'Select Gender' genderName, 0 genderID UNION ALL select genderName, genderId from Gender", con))
    { 
        con.Open();
        DropDownList1.DataSource =  cmd.ExecuteReader();
        DropDownList1.DataTextField = "genderName";
        DropDownList1.DataValueField = "genderID";
        DropDownList1.DataBind();
    }
}