如果没有回发和从数据库中选择的项目(如果适用),我有一个列表框数据绑定。如果我在列表框和回发中选择新项目,我的foreach逻辑始终只能看到原始选择,而不是更改。一直在敲我的头痒谷歌的答案。这是背后的代码:
foreach (ListItem li in lsb.Items)
{
if (li.Selected)
{
try
{
[sql insert]
}
}
}
编辑:我应该添加列表框包含在和updatepanel 中
答案 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) {
}
}
}
}