ASP.NET w/VB.NET-启用自动回邮功能的列表框或复选框列表上的多选

ASP.NET w/VB.NET-启用自动回邮功能的列表框或复选框列表上的多选,asp.net,vb.net,listbox,checkboxlist,autopostback,Asp.net,Vb.net,Listbox,Checkboxlist,Autopostback,背景:我有一个winForm应用程序,它根据表单中提供的用户输入在数据库中注册用户,自动为用户生成随机密码和用户名,并通过电子邮件向用户发送链接,以根据所选的营销公司获取应用程序 问题: 我让bundles列表框填充w/autopostback设置为true,但bundles列表框会在您单击lbcarrier时立即填充,并且不允许您选择多个运营商 关于如何允许启用回发功能的multiselect,您有什么想法吗 以下是界面的屏幕截图: default.aspx上的代码: <

背景:我有一个winForm应用程序,它根据表单中提供的用户输入在数据库中注册用户,自动为用户生成随机密码和用户名,并通过电子邮件向用户发送链接,以根据所选的营销公司获取应用程序

问题: 我让bundles列表框填充w/autopostback设置为true,但bundles列表框会在您单击lbcarrier时立即填充,并且不允许您选择多个运营商

关于如何允许启用回发功能的multiselect,您有什么想法吗

以下是界面的屏幕截图:

default.aspx上的代码:

        <td class="style1">
            Carriers:</td>
        <td bgcolor="#ffffff" class="style2">
            <asp:ListBox AutoPostback="true" ID="lbCarriers" runat="server" Height="86px" Width="250px">
            </asp:ListBox>
                </td>
            </tr>

        <td class="style1">
            Bundles:</td>
        <td bgcolor="#ffffff" class="style2">
            <asp:ListBox ID="bundles" runat="server" Height="86px" Width="250px">
            </asp:ListBox>
                </td>
            </tr>
谢谢你的关注

根据定义,当用户更改列表选择时,将自动导致回发

要启用多项选择,您需要关闭
AutoPostBack
并启用:


最简单的修复方法是关闭
AutoPostBack
,并根据建议更改
SelectionMode
。然后有一个按钮,
Get Bundles
。在该单击事件中,您可以添加代码,以根据Carrier listbox的列表检索捆绑包

我认为没有一个简单的方法可以做到这一点。控件无法知道已完成选择项。您可以将
autopostback=false
挂接您自己的javascript代码,以便在文本框失去焦点时进行回发。我认为从用户体验的角度来看,这并不理想。或者,您可以使用AJAX填充下一个文本框,但这当然会增加很多开销。最后,您可以让您的文本框成为包含下一个文本框的更新面板的触发器。谢谢您的回复!您能否发布一些启用SelectionMode属性的示例代码?我不清楚如何实现它。@Brian我已经更新了我的帖子。您可以将其指定为标记的一部分,而不是在代码隐藏中启用它。感谢您的更新。在受保护的子lbCarriers\u SelectedIndexChanged下,您会添加什么循环?如果可能,请提供代码。我已经为ac1 bundles.Items.Add(Trim(splt(2))&“|”和Pitem.FormBundleName中的每个Pitem创建了循环,谢谢您的回复!您能否发布一些启用SelectionMode属性的示例代码?
Protected Sub lbCarriers_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lbCarriers.SelectedIndexChanged

    Dim splt() As String
    Dim ac1 As Array
    bundles.Items.Clear()
    Dim item As ListItem = lbCarriers.SelectedItem
    splt = item.ToString().Split("|")
    ac1 = proxy.GetContractingBundles("test", "test", Trim(splt(0)))
    For Each Pitem In ac1
        bundles.Items.Add(Trim(splt(2)) & " | " & Pitem.FormBundleName)
    Next
End Sub
<asp:ListBox SelectionMode="Multiple" ID="lbCarriers" runat="server"
    Height="86px" Width="250px">
bundles.Items.Clear()
For Each item As ListItem In lbCarriers.Items
    If item.Selected Then
        Dim splt() As String
        Dim ac1 As Array
        splt = item.ToString().Split("|")
        ac1 = proxy.GetContractingBundles("test", "test", Trim(splt(0)))
        For Each Pitem In ac1
            bundles.Items.Add(Trim(splt(2)) & " | " & Pitem.FormBundleName)
        Next
    End If
Next