在 asp.net C# 中动态填充数据库中的下拉列表

本文关键字:数据库 下拉列表 填充 动态 net asp | 更新日期: 2023-09-27 18:32:47

我在 asp.net 带有 c# 的应用程序中有下拉列表。来自数据库的下拉列表元素(用户名)。默认情况下,我的下拉列表显示我选择的名字作为名字出现在我的数据库表中。即当我打开页面时,我看到该名称已被选中。我想要这样,所选名称应该像"nworks 用户"。我使用代码尝试了一下:

 <asp:DropDownList ID="DropDownListSelectEmployee" runat="server" AutoPostBack="true"
                                OnSelectedIndexChanged="DropDownListSelectEmployee_SelectedIndexChanged"
                                OnTextChanged="DropDownListSelectEmployee_TextChanged" Height="30px" Width="250px">
                                <asp:ListItem Selected="True">nWorks Employee</asp:ListItem>
                            </asp:DropDownList>

但是没有用。 我尝试的下一个选项是: DropDownListSelectEmployee.Selecteditem.Text="nWorks User";再次不起作用。我正在使用代码从数据库中获取项目:

public void 
    DropDownListSelectEmployee_Fill()
            {
                if (!Page.IsPostBack)
                {
                    DropDownListSelectEmployee.Items.Clear();
                    string q = "select username from nworksuser where _type='Employee';";
                    MySqlCommand cmd = new MySqlCommand(q, conn);
                    conn.Open();
                    string user = "";
                    MySqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        user = rdr.GetString("username");
                        DropDownListSelectEmployee.Items.Add(user);
                    }
                    conn.Close();
                }
            }

怎么可能?

在 asp.net C# 中动态填充数据库中的下拉列表

假设您不想选择任何名称,请使用:

使用DropDownListSelectEmployee.SelectedIndex = -1;

但是,如果您希望在顶部有一个命名框,只需将其添加为列表的第一项,并将其作为所选索引即可。

这样:

DropDownListSelectEmployee.Items.Add("nWorks User");
while (rdr.Read())
                {
                    user = rdr.GetString("username");
                    DropDownListSelectEmployee.Items.Add(user);
                }

您需要在循环之外添加第一项,然后默认情况下您将选择第一项。

绑定

数据后使用粗体字母代码后面的代码,默认选择"nworks User":

        DropDownListSelectEmployee.DataSource = table;
        DropDownListSelectEmployee.DataTextField = "Name";
        DropDownListSelectEmployee.DataValueField = "Id";
        DropDownListSelectEmployee.DataBind();
        DropDownListSelectEmployee.Items.Insert(0, new ListItem("--nworks User--", "0"));

<asp:DropDownList runat="server" ID="DropDownListSelectEmployee"OnSelectedIndexChanged="DropDownListSelectEmployee_SelectedIndexChanged" AutoPostBack="true"
        OnTextChanged="DropDownListSelectEmployee_TextChanged" Height="30px" Width="250px">
    </asp:DropDownList>

代码隐藏: 受保护的无效Page_Load(对象发送器,事件参数 e) { 如果(!Page.IsPostBack) { BindDropdwon(); } }

    protected void DropDownListSelectEmployee_SelectedIndexChanged(object sender, EventArgs e)
    {
    }
    protected void DropDownListSelectEmployee_TextChanged(object sender, EventArgs e)
    {
    }

    private void BindDropdwon()
    {
        DataTable table = new DataTable();
        table.Columns.Add("Id", typeof(int));
        table.Columns.Add("Name", typeof(string));
        // Here we add three DataRows.
        table.Rows.Add(25, "Indocin");
        table.Rows.Add(50, "Enebrel");
        table.Rows.Add(10, "Hydralazine");

        DropDownListSelectEmployee.DataSource = table;
        DropDownListSelectEmployee.DataTextField = "Name";
        DropDownListSelectEmployee.DataValueField = "Id";
        DropDownListSelectEmployee.DataBind();
        ***DropDownListSelectEmployee.Items.Insert(0, new ListItem("--nworks User--", "0"));***
    }
}