我使用了Bootstrap multiselect下拉项,如果我选择了很多值,它只选择第一个值,我的代码逻辑中有什么错误。
Asp下拉列表
<asp:dropdownlist Width="320px" id="drplstGetDb" runat="server" multiple="Multiple"> </asp:dropdownlist>
Javascript以启用bootstrap中的多项检查功能。
$(function() {
$('[id*=drplstGetDb]').multiselect({
includeSelectAllOption: true
});
});
C#代码存储在数组中。
int[] stopWordArray = new int[drplstGetDb.Items.Count];
foreach(ListItem listItem in drplstGetDb.Items) {
if (listItem.Selected) {
int i = 0;
stopWordArray[i] = Convert.ToInt32(drplstGetDb.Items[i].Value.ToString());
i++;
}
}
我只是在数组中获得第一个检查值,如果我不使用它if if(listItem.Selected)我可以将所有值存储在数组中。任何人都可以建议这个错误,特别是选择逻辑。或替代...
答案 0 :(得分:2)
因为您正在设置
int i = 0
在循环内部,无论如何都要设置stopWordArray的第一个数组元素。移动
int i = 0
到foreach的外面,你应该有更好的运气。
试试这个
int[] stopWordArray = new int[drplstGetDb.Items.Count];
int i = 0;
foreach(ListItem listItem in drplstGetDb.Items)
{
if (listItem.Selected)
{
stopWordArray[i] = Convert.ToInt32(listItem.Value.ToString()); //something like this
i++;
}
}
可能更容易摆脱int数组并使用列表
List<int> stopWordArray = new List<int>();
foreach (ListItem listItem in drplstGetDb.Items)
{
if (listItem.Selected)
{
stopWordArray.Add(Convert.ToInt32(listItem.Value.ToString()));
}
}