C# 相同的数据在下拉列表中出现两次

C# 相同的数据在下拉列表中出现两次,c#,C#,我有3个下拉列表: <tr> <td align="left" class="style2"> Emp Code</td> <td align="left"> <asp:UpdatePanel ID="UpdatePanel6" runat="server"> <ContentTemplate> <div class="input-prepend" title="Select Machine ID" data-rel=

我有3个下拉列表:

<tr>
<td align="left" class="style2">
Emp Code</td>
<td align="left">
<asp:UpdatePanel ID="UpdatePanel6" runat="server">
<ContentTemplate>
<div class="input-prepend" title="Select Machine ID" data-rel="tooltip">
<asp:DropDownList ID="ddcode" runat="server" AutoPostBack="True" 
onselectedindexchanged="ddcode_SelectedIndexChanged">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
ErrorMessage="RequiredFieldValidator" ControlToValidate="ddcode" ForeColor="Red">* 
</asp:RequiredFieldValidator>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
<tr>
<td align="left" class="style2">
Company</td>
<td align="left">
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<div class="input-prepend" title="Select Machine ID" data-rel="tooltip">
<asp:DropDownList ID="ddcompany" runat="server" AutoPostBack="True"> 
 </asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
ErrorMessage="RequiredFieldValidator" ControlToValidate="ddcompany" ForeColor="Red">* 
</asp:RequiredFieldValidator>
 </ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
<tr>
<td align="left" class="style2">
 Branch</td>
 <td align="left">
 <asp:UpdatePanel ID="UpdatePanel2" runat="server">
 <ContentTemplate>
 <div class="input-prepend" title="Select Machine ID" data-rel="tooltip">
 <asp:DropDownList ID="ddbranch" runat="server" 
 onselectedindexchanged="ddbranch_SelectedIndexChanged">
  </asp:DropDownList>
  <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" 
  ErrorMessage="RequiredFieldValidator" ControlToValidate="ddbranch" ForeColor="Red">*
 </asp:RequiredFieldValidator>
 </ContentTemplate> </asp:UpdatePanel>
 </td>
 </tr>
我的点击按钮是:

Dropdown dwn = new Dropdown();
    string str = "";
    SqlDataReader dr;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            fillempcode();
            //fillcompany();
            //filldepartment();
        }
    }
    protected void fillempcode()
    {

        string str = "select MachID,EmpCode from EmpDetails where StatusID='0'";
        dwn.dropdwnlist(str, ddcode);

    }
    protected void fillcompany()
    {
        //Where EmpCode='" + ddcode.SelectedItem.Text + "'
        str = "select CompanyID,CompanyName from Company ";
        dwn.dropdwnlist(str, ddcompany);
        str = "select CompanyID from View_Company where EmpCode='" + ddcode.SelectedItem.Text + "'";
        dr=conn.query(str);
        if (dr.Read())
        {
            string id = dr[0].ToString();
            ddcompany.SelectedItem.Text = id;
        }
    }
    protected void fillbranch()
    {
        //where EmpCode='" + ddcode.SelectedItem.Text + "'
        string str = "select BranchID,BranchName from View_Branch";
        dwn.dropdwnlist(str, ddbranch);
    }
我的问题是,当我在EmpCode下拉列表中选择时,我想启用所有的Dropdownlist。现在它工作正常,但“公司”和“分支”下拉列表显示的值相同。我可以知道原因吗?

试着像这样重写dropdwnlist方法

    public void dropdwnlist(string qry, DropDownList ddl)
    {
       ddl.Items.Clear();

       con.gettable(qry);
       if (con.dt.Rows.Count > 0)
       {
           if (con.dt.Columns.Count == 2)
           {
               string str1 = con.dt.Columns[0].ColumnName.ToString();
               string str2 = con.dt.Columns[1].ColumnName.ToString();
               ddl.DataValueField = str1;
               ddl.DataTextField = str2;
               ddl.DataSource = con.dt;
               ddl.DataBind();
               con.dt.Columns.Remove(str1);
               con.dt.Columns.Remove(str2);
           }
           else
           {
               string str = con.dt.Columns[0].ColumnName.ToString();
               ddl.DataValueField = str;
               ddl.DataTextField = str;
               ddl.DataSource = con.dt;
               ddl.DataBind();
               con.dt.Columns.Remove(str);
               //con.dt.Columns.Remove(str2);
           }    
       }
       ddl.Items.Insert(0, ("--Select--"));
       ddl.SelectedIndex = 0;
    }

希望这有帮助…

你的按钮\u click在这里做什么?@Thirisangu,按钮click对下拉列表填充不起作用当fillcompany和fillbranch被调用时?@Thirisangu,当我单击EmpCode dropdownlist时。我使用EmpCode下拉菜单单击eventInclude ddl.Items.Clear调用了这些函数;ddl.DataValueField=str1;。。。在这两部分中。,
    public void dropdwnlist(string qry, DropDownList ddl)
    {
       ddl.Items.Clear();

       con.gettable(qry);
       if (con.dt.Rows.Count > 0)
       {
           if (con.dt.Columns.Count == 2)
           {
               string str1 = con.dt.Columns[0].ColumnName.ToString();
               string str2 = con.dt.Columns[1].ColumnName.ToString();
               ddl.DataValueField = str1;
               ddl.DataTextField = str2;
               ddl.DataSource = con.dt;
               ddl.DataBind();
               con.dt.Columns.Remove(str1);
               con.dt.Columns.Remove(str2);
           }
           else
           {
               string str = con.dt.Columns[0].ColumnName.ToString();
               ddl.DataValueField = str;
               ddl.DataTextField = str;
               ddl.DataSource = con.dt;
               ddl.DataBind();
               con.dt.Columns.Remove(str);
               //con.dt.Columns.Remove(str2);
           }    
       }
       ddl.Items.Insert(0, ("--Select--"));
       ddl.SelectedIndex = 0;
    }