在asp.net中检索foreach循环值

时间:2014-04-23 07:40:14

标签: c# asp.net

我在列表框中有值,我必须从中选择一个或多个值并将其保存在数据库中。但是当我选择多个值(例如:选择了2个项目)时,它只保存我选择的项目的第一个值(例如:两次)。

以下是要保存在数据库中的查询。

foreach (ListItem li in lbMess.Items)
{
    if (li.Selected)
    {
        strSQL += string.Format("INSERT INTO message(messageContent, messageDate, staffCode) VALUES ('{0}',getdate(),'{1}');", txtMess.Text, lbMess.SelectedValue);
    }
}

4 个答案:

答案 0 :(得分:4)

在插入语句中,您没有使用正在迭代的li

试试这个:

strSQL += string.Format("INSERT INTO message(messageContent,messageDate,staffCode) VALUES ('{0}',getdate(),'{1}');", txtMess.Text, li.Text);

答案 1 :(得分:1)

Youu正在使用lbMess.SelectedValue,默认情况下只会获取第一个项目,但您正在遍历所有项目。

确保使用li对象的值。 (li.Valueli.Text取决于您的实施方式)

答案 2 :(得分:1)

  

Youu正在使用lbMess.SelectedValue,默认情况下只会获取   第一项。

试试这个

foreach (ListItem li in lbMess.Items)
{
   if (li.Selected)
   {
     strSQL += string.Format("INSERT INTO message(messageContent,messageDate,staffCode) VALUES ('{0}',getdate(),'{1}');", txtMess.Text, li.Value);
   }

 }

foreach (ListItem li in lbMess.Items)
{
   if (li.Selected)
   {
     strSQL += string.Format("INSERT INTO message(messageContent,messageDate,staffCode) VALUES ('{0}',getdate(),'{1}');", txtMess.Text, li.Text);
   }

 }

答案 3 :(得分:0)

我相信你应该迭代SelectedItems属性,如下所示:

            foreach(var item in listBox1.SelectedItems)
            {
                // Insert into DB.
                strSQL += string.Format("INSERT INTO message(messageContent,
                messageDate,staffCode) VALUES ('{0}',getdate(),'{1}');", 
                    txtMess.Text, (String)item);
            }