如何在asp.net中的数组中的多选下拉列表中存储所选值的列表?

时间:2015-07-23 12:15:52

标签: javascript c# asp.net

我使用了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)我可以将所有值存储在数组中。任何人都可以建议这个错误,特别是选择逻辑。或替代...

1 个答案:

答案 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()));
      }
 }