我遇到了一个奇怪的问题。我在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初始化。我还添加了“之前”和“之后”
的图像答案 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已被调用,因为它是一个嵌套的数据绑定控件。尝试注释掉你的数据绑定调用,看看是否能修复它。