dropdownlist在选择后添加了更多列表项

时间:2011-08-11 14:37:27

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

我遇到了一个奇怪的问题。我在Web应用程序中使用DropDownList项。在我第一次检查其中一个选项后,所有项目都被添加到列表的末尾。
像这样初始化

 protected void Page_Load(object sender, EventArgs e)
    {
        string myXMLfile = Server.MapPath("~/VMlist.xml");
        DataSet dsMachines = new DataSet();
        try
        {
            dsMachines.ReadXml(myXMLfile);
            DropDownList1.DataSource = dsMachines;
            DropDownList1.DataValueField = "machineID";
            DropDownList1.DataTextField = "machineName";
            DropDownList1.DataBind();

        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }

和SelectedIndexChanged:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

        machineOS.Text = OSdata.OSDataRetrieve.getOSInfo(DropDownList1.SelectedItem.Text);

    }

我使用XML初始化。我还添加了“之前”和“之后”image

的图像

4 个答案:

答案 0 :(得分:1)

您需要将以下内容添加到Page_Load:

if (!Page.IsPostBack)
{
    //code to bind dropdown
}

每次页面回发时,您的列表都会被绑定,这就是您获得重复项的原因。添加以上行,您应该全部设置。

答案 1 :(得分:1)

因为您设置了AppendDataBoundItems="true"

您必须将其设置为AppendDataBoundItems="false"

每次下拉选择索引更改事件时,您的下拉列表再次绑定并再次添加数据源项。

答案 2 :(得分:0)

在page_load中,您应该检查IsPostback。

目前,您要在每次加载时将列表重新绑定到列表框。它不只是添加3个新项目 - 还有一个滚动条,我怀疑它正在重新添加所有项目。

答案 3 :(得分:0)

我的问题是我手动调用了databind(),但发现databind已被调用,因为它是一个嵌套的数据绑定控件。尝试注释掉你的数据绑定调用,看看是否能修复它。