ListBox没有获得所有选定的项目

时间:2012-02-09 02:48:22

标签: c# asp.net webforms

我有一个ListBox,它是从后面的代码中的数据库动态填充的。我有另一个按钮,当我单击按钮时,按钮单击事件将获得所有选定的listitem并将列表项文本插入数据库。我将AutoPostBack设置为false,并且在listbox属性中将EnableViewState设置为true

问题是当我点击按钮时,它只能看到1个所选项目,即使我选择了多个项目。这是代码。我感谢您的帮助。我在这个问题上花了一天时间而没有到达任何地方。

protected void Page_Load(object sender, EventArgs e)
{  
        if (!IsPostBack)
        {    
            loadrdlist();
        }  
} 

protected void loadrdlist()
{
         ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Clear();

        foreach (FailureTempRD rd in FailureTempRD.SelectFailureTempRD())
            ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Add(new ListItem(rd.ReferenceDesignator, rd.ReferenceDesignator)); 
}

protected void btn_AddRD_Click(object sender, EventArgs e)
{
    foreach (ListItem rd in ((ListBox)TestFormView.FindControl("ListBoxB")).Items) //This is where it only see 1 selected item
     {
        if (rd.Selected == true) 
           //put selected item to database
        }
    }
}

以下是列表框和按钮

<asp:ListBox ID="ListBoxB" runat="server" SelectionMode="Multiple" ></asp:ListBox>
<asp:Button ID="btn_AddRD" runat="server" CausesValidation="False"  onclick= "btn_AddRD_Click" Text="Add" />

更新: 我想为什么。当我加载listitem时,我需要添加ID作为listitem值。因此,请更改以下代码。我测试了几次,它按预期工作。

 ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Add(new ListItem(rd.ReferenceDesignator, rd.ReferenceDesignator)); 

 ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Add(new ListItem(rd.ReferenceDesignator, rd.ID));

1 个答案:

答案 0 :(得分:0)

尝试使用GetSelectedIndices方法。

从上面链接:

  

使用GetSelectedIndices方法识别或访问所选的   ListBox控件中的项目。返回数组中的每个元素   表示所选列表项的索引。您可以使用索引   用于访问Items集合中的项目的值。