The first intem in a DropDownList is vanishing!

Discussion in 'ASP .Net' started by mark4asp, Jun 1, 2007.

  1. mark4asp

    mark4asp Guest

    The first intem in a DropDownList is vanishing!

    My code to load a DropDownList is shown below. Yet when I load the
    page after a postback there is no zeroth item present.

    lstManager.Items.Clear();

    lstManager.DataSource = _dsData.Tables["manager"].DefaultView;
    lstManager.DataValueField = "ManagerID";
    lstManager.DataTextField = "Name";
    lstManager.DataBind();

    lstManager.Items.Insert(0, new ListItem("none", "0"));


    There's nothing special about the control definition:

    <asp:DropDownList ID="lstManager" runat="server" Height="20px"
    Width="250px" />

    What's going on here?



    This was the old code I replaced. Why does the old code (below) work
    and why is my new code (above) broke?

    lstManager.Items.Clear();

    ListItem li = new ListItem("none","0");
    lstManager.Items.Add(li);

    foreach (DataRow drManager in _dsData.Tables["manager"].Rows)
    {
    ListItem liManager = new ListItem((string)drManager["Name"],
    ((int)drManager["ManagerID"]).ToString());
    lstManager.Items.Add(liManager);
    }
     
    mark4asp, Jun 1, 2007
    #1
    1. Advertisements

  2. mark4asp

    Dunc Guest

    I had this one a while back; turns out I was using simple properties
    on a Master Page that required a DataBind() call to bind them. When
    it was called, it was also rebinding the content page, which loses the
    manually added items.

    I recall this issue also happened with an ASCX file on the page, or if
    you call a generic DataBind() any time after the addition of
    ListItems, etc.

    Dunc
    http://www.fluidfoundation.com
     
    Dunc, Jun 1, 2007
    #2
    1. Advertisements

  3. mark4asp

    mark4asp Guest

    Thanks Dunc, for sharing that with me - that scenario you described
    sounds very like mine.
     
    mark4asp, Jun 1, 2007
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.