【问题标题】:Drop down list is showing unexpected behave下拉列表显示意外行为
【发布时间】:2016-01-30 19:17:20
【问题描述】:

Asp.net 代码:

     Select Employee : </b>
    <asp:DropDownList ID="DropDownListSelectEmployee" runat="server" AutoPostBack="true" 
OnSelectedIndexChanged="DropDownListSelectEmployee_SelectedIndexChanged"
 OnTextChanged="DropDownListSelectEmployee_TextChanged"  >
                                    </asp:DropDownList>

后面的代码:

  public void DropDownListSelectEmployee_Fill()
        {
            DropDownListSelectEmployee.Items.Clear();
            string q = "select username from nworksuser where _type='Employee' or _type='Admin_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();
        }
 protected void DropDownListSelectEmployee_TextChanged(object sender, EventArgs e)
        {
            string q = "select uid,fname,mname,lname,date_format(hire_date,'%Y-%m-%d'),desg,date_format(dob,'%Y-%m-%d'),AddressLine1,AddressLine2,state,city,pincode,country,MobileNo,UserActive,username,date_format(annivarsary,'%Y-%m-%d'),email from nWorksUser where Username='" + DropDownListSelectEmployee.Text + "'";
            MySqlCommand cmd = new MySqlCommand(q, conn);
            conn.Open();
            MySqlDataAdapter dataAdapter = new MySqlDataAdapter(q, conn);
            DataTable dt = new DataTable();
            dataAdapter.Fill(dt);
            foreach (DataRow dr in dt.Rows)
            {

                txtFirstName.Text = dr[1].ToString();
                txtMiddleName.Text = dr[2].ToString();
                txtLastName.Text = dr[3].ToString();
                txtMobile.Text = dr[13].ToString();
                txtUsername.Text = dr[15].ToString();
                txtState.Text = dr[9].ToString();
                txtPincode.Text = dr[11].ToString();
                txtEmail.Text = dr[17].ToString();
                txtDob.Text = dr[6].ToString();
                txtDesignation.Text = dr[5].ToString();
                txtDateofHire.Text = dr[4].ToString();
                txtDateofAnnivarsary.Text = dr[16].ToString();
                txtCountry.Text = dr[12].ToString();
                txtCity.Text = dr[10].ToString();
                txtAddressLine2.Text = dr[7].ToString();
                txtAddressLine1.Text = dr[8].ToString();

                if (dr[14].ToString().Length == 4)
                {
                    RdoGender.SelectedIndex = 1;
                }
                else
                {
                    RdoGender.SelectedIndex = 2;
                }
                conn.Close();
            }

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

        }

下拉列表包含数据库中的用户名。现在我想要这样,当您从下拉列表中选择任何用户时,它应该以表单及其工作方式显示他的详细信息。但问题是,在选择任何一个用户后,该名称会暂时出现在下拉列表中,并将其重置为下拉列表的第一个名称,任何显示其相关而不是选择的详细信息。它不接受除名字下拉列表之外的任何其他名称。我不知道问题出在哪里。请帮帮我。

【问题讨论】:

    标签: c# asp.net drop-down-menu


    【解决方案1】:

    您需要用if (!Page.IsPostBack)DropDownListSelectEmployee_Fill 中的代码包装起来。在回帖时,下拉内容将重新填充,导致其状态重置,这就是您看到“意外行为”的原因。

    检查回发,您可以确定下拉菜单不会受到选择更改的影响:

    public void DropDownListSelectEmployee_Fill()
    {
        if (!Page.IsPostBack) 
        {
            DropDownListSelectEmployee.Items.Clear();
            string q = "select username from nworksuser where _type='Employee' or _type='Admin_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();
        }
    }
    

    【讨论】:

    • 但我没明白那句话的意思。
    • 在下拉列表中,您将 AutoPostBack 设置为 true。每当您在下拉列表中进行选择时,这将导致页面回发其内容。因为您没有明确检查回发,所以每次都会调用 DropDownListSelectEmployee_Fill 中的代码,导致数据被反弹并删除您之前的选择。
    • 哦……对我来说是新的和充满意义的。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多