3

我正在尝试将 1 个默认值添加到我的下拉列表框中的 1 个中。

我有 2 个;

  1. DD位置
  2. DDL警察

我通过属性将项目添加到 DDLocation 中。因此,每当用户尝试单击其中一项时,DDLpolice 都会自动从数据库中获取值。不幸的是,有一个持久性错误,例如只要只有 1 个值可用,数据就不会显示。仅当您在显示第一个选项之前有 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 已被绑定,因此我无法添加默认值。我尝试使用这两种方法,但都失败了

我为此添加了一个文本。

<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 与数据库的绑定,我无法添加。任何帮助,将不胜感激。

问候。


更新! 我终于可以使用 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。

4

1 回答 1

2

这是有道理的。每当您DataBind为 DropDownList 执行操作时,它都会丢失任何以前的值。您可以尝试在 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>
于 2013-05-29T01:41:46.617 回答