带VB.NET的ASP.NET-启用了自动回发功能的ListBox或CheckBoxList上的MultiSelect

| 背景:我有一个winForm应用程序,该应用程序根据表单中提供的用户输入在数据库中注册用户,为用户自动生成随机密码和用户名,并通过电子邮件向用户发送链接以基于该应用程序选定的营销公司。 问题: 我将要自动填充的bundles列表框设置为true,但是单击lbcarrier后,bundles列表框就会立即填充,并且不允许您选择多个载波。 您对启用回发功能时如何允许多重选择有任何想法吗? 这是该界面的屏幕截图: 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>
default.aspx.vb上的代码:
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
感谢您的光临!     
已邀请:
根据定义,当用户更改列表选择时,“ 2”属性将自动导致发生回发。 要启用多个选择,您需要关闭
AutoPostBack
并启用
SelectionMode
属性:
<asp:ListBox SelectionMode=\"Multiple\" ID=\"lbCarriers\" runat=\"server\"
    Height=\"86px\" Width=\"250px\">
请注意,默认情况下
AutoPostBack
false
,因此我简单地省略了它。 用户提交后,您可以使用与
lbCarriers_SelectedIndexChanged
事件类似的逻辑来处理选定的列表框项目。然后,您可以循环浏览这些项目并检查该项目的ѭ9属性,也可以循环浏览ѭ10方法的结果并通过其索引引用这些项目。 如果那不是您要采用的路线,并且您希望它在没有回发的情况下即时进行处理,那么您将需要编写一些JavaScript。 编辑:通过您选择的项目的代码将类似于下面的代码,并且您可能会将其放置在由提交按钮的事件处理程序调用的方法中。
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
    
最简单的解决方法是关闭
AutoPostBack
,然后根据建议更改
SelectionMode
。然后有一个按钮,
Get Bundles
。在该click事件中,您可以添加代码以根据“运营商”列表框检索捆绑包。     

要回复问题请先登录注册