ASP.NET DropDownList-GetSelectedDices缺少一个选定项

ASP.NET DropDownList-GetSelectedDices缺少一个选定项,asp.net,drop-down-menu,Asp.net,Drop Down Menu,也许我疯了——我以为这是直截了当的 ListCode.DataTextField = "code_desc"; ListCode.DataValueField = "code_id"; ListCode.DataSource = Foo.GetCodes(); ListCode.DataBind(); 选择模式设置为“倍数”,所有设置都很好,显示大约50个具有适当值的项目。然后我选择5项并提交表单。我做一个 int[] indices = ListCode.GetSelectedIndices

也许我疯了——我以为这是直截了当的

ListCode.DataTextField = "code_desc";
ListCode.DataValueField = "code_id";
ListCode.DataSource = Foo.GetCodes();
ListCode.DataBind();
选择模式设置为“倍数”,所有设置都很好,显示大约50个具有适当值的项目。然后我选择5项并提交表单。我做一个

int[] indices = ListCode.GetSelectedIndices();
数组中只有我选择的前四项。似乎如果我在列表中选择多个项目并提交表单,那么除了最后一个选择的项目外,我只能检索所有项目-无论我是使用GetSelectedDices还是遍历列表中的每个项目


任何帮助都将不胜感激。

这不是一个真正的答案,但我在一个复选框列表中进行了交换,它像一个冠军一样工作。

我想你一定在使用一个
列表框。我制作了以下测试应用程序:

<asp:ListBox ID="lstTest" runat="server" SelectionMode="Multiple">
    <asp:ListItem Text="Test1" Value="1" />
    <asp:ListItem Text="Test2" Value="2" />
    <asp:ListItem Text="Test3" Value="3" />
    <asp:ListItem Text="Test4" Value="4" />
</asp:ListBox>
<asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" />
<asp:Label ID="lblTest" runat="server" />

protected void btnTest_Click(object sender, System.EventArgs e)
{
    int[] selectedIndexes = lstTest.GetSelectedIndices();
    lblTest.Text = selectedIndexes.Length.ToString();
}

受保护的无效btnTest\u单击(对象发送方,System.EventArgs e)
{
int[]selectedIndex=lstest.getselectedIndice();
lblTest.Text=selectedIndex.Length.ToString();
}

似乎工作正常,所以我不得不假设这与您的绑定或获取标识时有关。您能发布一个精简版本的损坏代码吗?

您是否检查了从“ListCode.GetSelectedIndices()”返回的数组计数?另外,控件是Dropdownlist还是listbox?您确定数组实际上只有四项。。。e、 也许你爱上了(inti=0;i@jamietre我想到了(回帖问题)但不,它是准确的。奇怪的是,如果选择了多个项目,最后一个项目就被删除了。我设法绕过了它,但替代了一个复选框列表,这就像一个冠军一样。你的磁贴上写着
DropDownList
。你确定它是
DropDownList
而不是
列表框
?不支持multi使用
下拉列表选择。