繁体   English   中英

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

[英]fill drop down list from database dynamically in asp.net c#

我用c#在asp.net应用程序中下拉列表。 下拉列表的元素来自数据库(用户名)。 默认情况下,我的下拉列表显示我选择的名字作为名字。 即当我打开页面时,我看到该名称已被选择。 我希望选择的名称应类似于“ 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();
                }
            }

怎么可能?

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

使用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>

后面的代码:protected void Page_Load(object sender,EventArgs e){if(!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"));***

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM