ListBox 未获取所有选定项目

发布于 2025-01-03 20:18:11 字数 1608 浏览 0 评论 0原文

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

问题是当我单击按钮时,即使我选择多个项目,它也只能看到 1 个选定项目。以下是代码。我很感激你的帮助。我在这个问题上花了 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" />

Update : 我明白为什么。当我加载列表项时,我需要添加 ID 作为列表项值。因此更改以下代码。我测试了几次,它按预期工作。

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

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

I have a ListBox which is populated dynamically from a database in the code behind. I have another button and when i click the button, the button click event will get the all the selected listitem and insert the list item text to the database. I set AutoPostBack as false and EnableViewState is true in the listbox property

The problem is when i click the button , it only see 1 selected item even i select multiple items.Here are the codes. I appreciate your help. I spend 1 day on this issue and not getting anywhere.

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
        }
    }
}

Here are both listbox and button

<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" />

Update :
I figure why. When i load the listitem, i need to add ID as listitem value. So change the following code. I test few times and it works as intend.

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

To

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你好,陌生人 2025-01-10 20:18:11

尝试使用 GetSelectedIndices 方法。

从上面的链接:

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

Try using the GetSelectedIndices Method.

From above link:

Use the GetSelectedIndices method to identify or access the selected
items in the ListBox control. Each element in the returned array
represents the index for a selected list item. You can use the index
values to access the items in the Items collection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文