将默认值添加到下拉列表中

时间:2013-05-29 01:36:23

标签: c# html asp.net

我正在尝试在我的dropdownlistbox中添加一个默认值。

我有2个;

  1. DDLocation
  2. DDLpolice
  3. 我通过属性将项目添加到DDLocation中。因此,每当用户尝试单击其中一个项目时,DDLpolice将自动从数据库中获取值。 不幸的是,有一个持续存在的错误,例如只要有一个值可用,就不会显示数据。只有在能够显示第一个选项之前要选择2个值时,才会显示数据。我将我的DDLocation绑定到下面的代码。我在下面添加了一个默认值。不幸的是,默认值仅适用于选择DDLocation

    protected void DDLocation_SelectedIndexChanged(object sender, EventArgs e)
    {
            using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security= SSPI"))
            {
                connAdd.Open();
    
                var sql = "Select policeid from LoginRegisterPolice where location='" + lblocation.SelectedItem.Text + "' AND status='available' AND handle='offcase'";
                using (var cmdAdd = new SqlDataAdapter(sql, connAdd))
                {
                    DataSet ds2 = new DataSet();
                    cmdAdd.Fill(ds2);
    
                    DDLpolice.DataSource = ds2;
                    DDLpolice.DataTextField = "policeid";
                    DDLpolice.DataValueField = "policeid";
                    DDLpolice.DataBind();
    
                    DDLpolice.Items.Insert(0, new ListItem("Select Officer", "NA"));
                }
    
                connAdd.Close();
            }
    }
    

    我尝试在我的DDLpolice中添加一个默认值,就像我对之前的DDL一样。不幸的是,DDLpolice正在被绑定,因此我没有选择添加默认值。我尝试使用这2种方法,但都失败了

    我为此添加了一个文本。

    <asp:DropDownList ID="DDLpolice" runat="server" DataTextField="dropdownpolice" DataValueField="dropdownpolice" Text="Select Officer" OnSelectedIndexChanged ="DDLpolice_SelectedIndexChanged1" style="height: 22px">
        </asp:DropDownList>
    

    我也尝试过使用这种方法

    protected void DDLpolice_SelectedIndexChanged1(object sender, EventArgs e)
    {
        DDLpolice.Items.Add("Select Officer");
    }
    

    因此总之,我认为由于DDL与数据库的绑定,我无法添加。任何帮助将不胜感激。

    问候。


    UPDATE! 的 我终于可以使用AD.net提供的这个方法添加默认值

        <asp:DropDownList ID="DDLpolice" runat="server" DataTextField="dropdownpolice"       DataValueField="dropdownpolice" OnSelectedIndexChanged ="DDLpolice_SelectedIndexChanged1"     style="height: 22px"
        AppendDataBoundItems="true">
        <asp:ListItem Value="">Select Officer</asp:ListItem>
        </asp:DropDownList>
    

    基本上,您必须在源代码(html端)中添加AppendDataBoundItem方法。之后,添加一个ListItemValue,它将包含您的默认值。

1 个答案:

答案 0 :(得分:2)

这是有道理的。每当你为DropDownList执行DataBind时,它都会丢失任何先前的值。您可以尝试在ddl的OnDataBound事件之后添加额外项目,该事件应在完成DataBinding后触发。您也可以尝试使用此属性AppendDataBoundItems并在html中声明默认项。

AppendDataBoundItems让你每次做数据绑定时都附加项目,所以它不应该是你的正确选择,除非你删除第一个以外的项目。

您应该遵循第一种方法,插入默认项ondatabound事件。

protected void DDLpoliceDataBound(object sender, EventArgs e)
{
    DDLpolice.Items.Insert(0, new ListItem("Select Officer", "NA"));
}

<asp:DropDownList runat="server" ID="DDLpolice" 
ondatabound="DDLpoliceDataBound"></asp:DropDownList>