listbox selectedindex仅选择最后一个元素

时间:2014-05-31 20:32:05

标签: c# asp.net listbox

我有一个列表框,它绑定到数据库中的对象列表。我有一个辅助列表,其中包含较少的对象,我想用它来标记为选定的元素。

        cell = new HtmlTableCell();
        List<ClasaAutor> listaAutori = DataTableToClasaAutor(dal.CitesteTotiAutori());
        List<ClasaAutor> listaAutoriPublicatie = DataTableToClasaAutor(dal.CitesteTotiAutoriUneiPublicatii(guidPublicatie));
        ListBox list = new ListBox();
        list.SelectionMode = ListSelectionMode.Multiple;
        list.ID = "cbAutori";
        list.DataSource = listaAutori;
        list.DataTextField = "NumeComplet";
        list.DataValueField = "GuidAutor";
        list.DataBind();
        foreach (ClasaAutor autor in listaAutoriPublicatie)
        {
            for (int i = 0; i < list.Items.Count; i++)
            {
                if (list.Items[i].Value == autor.GuidAutor.ToString())
                    list.SelectedIndex = i;
            }
        }

        cell.Controls.Add(list);
        row.Cells.Add(cell);

问题是只有我的最后一个元素被选中......为什么?我该如何解决?

我的if没问题,它真实了2次......

2 个答案:

答案 0 :(得分:2)

试试这个循环:

foreach (ClasaAutor autor in listaAutoriPublicatie)
{
    foreach (ListItem item in list.Items)
    {
        if (item.Value == autor.GuidAutor.ToString())
            item.Selected = true;
    }
}

答案 1 :(得分:1)

语义问题,列表的SelectedIndex只能包含一个值,这不是集合

但是,您可以通过将其Selected值设置为true来选择列表项

 list.Items[i].Selected = list.Items[i].Value == autor.GuidAutor.ToString();
相关问题