获取对多选列表框所选项目的更改

时间:2011-11-09 22:34:41

标签: c# asp.net

如果没有回发和从数据库中选择的项目(如果适用),我有一个列表框数据绑定。如果我在列表框和回发中选择新项目,我的foreach逻辑始终只能看到原始选择,而不是更改。一直在敲我的头痒谷歌的答案。这是背后的代码:

  foreach (ListItem li in lsb.Items)
  {
    if (li.Selected)
    {
      try
      {
        [sql insert]
      }
    }
  }
编辑:我应该添加列表框包含在和updatepanel

2 个答案:

答案 0 :(得分:4)

希望这些会给你冥想。

protected void MyListBox_TextChanged(object sender, System.EventArgs e)
{
    try
    {
        listObject = sender as ListBox;

        if (listObjct ! = null && !CheckItemInDBorNot(listObject.Text))
        {
            // This item not exists in Db,
            // excute sql insert it into Db.
            Add(listOjbect.Text);
        }

    }
    catch (Exception ex)
    {

    }
}

答案 1 :(得分:0)

标记:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple">
            <asp:ListItem Value="1" />
            <asp:ListItem Value="2" />
            <asp:ListItem Value="3" />
            <asp:ListItem Value="4" />
            <asp:ListItem Value="5" />
        </asp:ListBox>
        <asp:Button ID="btnPostback" runat="server" Text="Postback" OnClick="btnPostback_Click"/>
    </ContentTemplate>
</asp:UpdatePanel>

代码隐藏:

protected void btnPostback_Click(object sender, System.EventArgs e)
{
    for (int i = 0; i <= ListBox1.Items.Count - 1; i++) {
        ListItem li = ListBox1.Items(i);
        if (li.Selected) {
            try {
                string sValue = li.Text;
            // Do insert here

            } catch (Exception ex) {
            }
        }
    }
}