如何在ASP中使用数据库结果填充下拉列表标题之前添加下拉列表标题

本文关键字:标题 下拉列表 填充 添加 结果 数据库 ASP | 更新日期: 2023-09-27 18:37:14

我知道 HTML 中的选择菜单不存在 title 属性,所以通常我只有一个顶部带有空值的选项,上面写着"选择项目",然后我默认选择它。 我的问题是我的ASP项目中的选择菜单绑定到数据字段。 我从 C# 文件添加的额外选项没有出现。 我认为这是因为数据字段覆盖了这个额外的选项。 我还尝试在我的aspx文件的下拉列表中添加一个列表项。 这无济于事。 如何添加此额外选项?

这是我的 C#

protected void Page_Load(object sender, EventArgs e)
        {
            string connstring;
            connstring = ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString;
            SqlConnection conn = new SqlConnection(connstring);
            SqlCommand cmd = new SqlCommand("dbo.GetCourses", conn);
            conn.Open();
            DDCourses.Items.Add(new ListItem("Select Course", "0"));
            DDCourses.DataSource = cmd.ExecuteReader();
            DDCourses.DataTextField = "courseName";
            DDCourses.DataValueField = "courseId";
            DDCourses.DataBind();
            conn.Close();
            conn.Dispose();
        }

下面是 ASP:

<asp:DropDownList ID="DDCourses" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DDCourses_SelectedIndexChanged" SelectCommandType="StoredProcedure"
            SelectCommand="GetCourses" DataTextField="courseName" DataValueField="courseId">
     <asp:ListItem selected="True" Text="Select Course"></asp:ListItem>
</asp:DropDownList>

如何在ASP中使用数据库结果填充下拉列表标题之前添加下拉列表标题

以编程方式插入它,但在数据绑定之后执行此操作。

DDCourses.Items.Insert(0, New ListItem("Select Course", "0"));
DDCourses.SelectedIndex = 0;

设置属性:

AppendDataBoundItems="true"

还要确保在你的Page_Load()中有:

if(!Page.IsPostBack)
{
    // databind code.
}

这里的问题是, 您在分配数据源之前添加附加项。这样,在分配数据源时,下拉列表将加载新数据源。因此,您要做的是在分配数据源后将项插入0th索引。代码段将如下所示:

 DDCourses.DataSource = cmd.ExecuteReader();
 DDCourses.DataTextField = "courseName";
 DDCourses.DataValueField = "courseId";
 DDCourses.DataBind();
 DDCourses.Items.Insert(0, New ListItem("Select Course", "0"));

如果您希望默认情况下选择插入的项目,则需要在插入语句后编写单行DDCourses.SelectedIndex = 0;