DropDownList drop = (DropDownList)conList.Controls[0].FindControl("conTypeDropDown");
            //drop.DataSource = ds.Tables["type"];
            //drop.DataTextField = "typeName";
            //drop.DataValueField = "typeID";
            //drop.DataBind();
            drop.Items.Add(new ListItem("所有","0"));
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                drop.Items.Add(new ListItem(ds.Tables[0].Rows[i]["typeName"].ToString(), ds.Tables[0].Rows[i]["typeID"].ToString()));
            }代码如上  现在的问题是  new ListItem("所有","0")被添加了两次  怎么回事啊?

解决方案 »

  1.   


    drop.DataSource=ds.Tables[0];
    drop.DataTextField="typeName";
    drop.DataValueField="typeID";
    drop.DataBind();
    drop.Items.Insert(0,new ListItem("所有","0"));
      

  2.   

    需要在 绑定了dropdownlist 以后 在插入drop.DataSource=ds.Tables[0];
    drop.DataTextField="typeName";
    drop.DataValueField="typeID";
    drop.DataBind();
    drop.Items.Insert(0,new ListItem("所有","0"));楼上这个非常正确
      

  3.   

    恩  楼上的方法可以   
    只是纳闷断点追踪了下  执行了drop.Items.Add(new ListItem("所有","0"))之后
    drop.Items.count直接变2了 添了两列  囧
      

  4.   

    发现问题所在了
    <asp:DropDownList Width="100" ID="conTypeDropDown" runat="server" AutoPostBack="true">
                    <asp:ListItem Value="0">所有</asp:ListItem></asp:DropDownList>
    页面早就加了这么一行  添加当然就两行了   
    drop.DataSource=ds.Tables[0]; 
    drop.DataTextField="typeName"; 
    drop.DataValueField="typeID"; 
    drop.DataBind(); 重新绑定再添加就clear页面上的那列了  所以是对的   啊咧啊咧   我太2了...只看cs文件  没看页面谢谢楼上费心给我这2货解答的大大们
      

  5.   


    if(!IsPostBack)
    {//放你的代码
    }
      

  6.   

    先清空下
    DropDownList1.Items.Clear()
      

  7.   

    我也遇到问题了 请教下 呵呵
    绑定成功后,在单击的时候,用session对象获取选择的对象的时候,为啥获取不多 或者只能获取第一个啊 呵呵 我是新手 请大家帮忙 嘻嘻