0

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

问题:

  • 当用户选择 lbCarrier(s) 时,Bundles 不会显示在列表框中 b/c lostfocus 功能不适用于 asp.net。我可以使用什么代码根据在 ASP.NET 的 lbCarrier 列表框中选择的内容自动填充 Bundles 列表框。

网络应用截图

来自 default.aspx.vb 的代码:

Private Sub lbCarriers_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbCarriers.LostFocus
    Dim splt() As String
    Dim ac1 As Array
    bundles.Items.Clear()
    For Each item In lbCarriers.Items

        splt = Split(item.text, "|")
        ac1 = proxy.GetContractingBundles("test", "test", Trim(splt(0)))
        For Each Pitem In ac1
            bundles.Items.Add(Trim(splt(2)) & " | " & Pitem.FormBundleName)
        Next
    Next
End Sub

Protected Sub lbCarriers_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles lbCarriers.SelectedIndexChanged

End Sub
4

3 回答 3

2

您需要做一些客户端 javascript,或在下拉列表中添加 AutoPostBack 并编码 OnSelectedIndexChanged 事件:

<asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="MethodName" ...

此外,LostFocus 事件仅在客户端触发,而不在服务器上触发,它是一个名为“Blur”的 Javascript 事件:

http://www.java2s.com/Code/JavaScriptReference/Javascript-Methods/blur.htm

于 2011-04-11T18:59:32.213 回答
1

我建议您考虑使用jQuery。它使客户端编程变得更加简单。您需要做的是在失去焦点时向服务器发出异步AJAX请求,然后让服务器只返回您想要在列表框中显示的数据。

这应该在您的主页底部:

<script type="text/javascript">
$(document).ready(function() {
    $("#lbCarrier").onblur(function () {
        // Ask the server for the list
        $.ajax({
           type: "POST",
           url: "getlist.aspx",
           data: "option=" + $("#lbCarrier").val(),
           success: function(result) {
               // When you get the result, populate the Bundles list
               $("#lbBundles").......
           }
         });
    });
});
</script>

您需要创建第二个页面 (getlist.aspx),该页面接受“选项”的查询字符串参数,该参数返回所选运营商的捆绑包。

于 2011-04-11T19:57:00.933 回答
0

我得到了要填充的捆绑列表框,其中自动回发设置为 true,但是一旦您单击 lbcarrier,捆绑列表框就会填充,并且它不允许您选择多个运营商。

您对如何使用回发功能允许多选有任何想法吗?

default.aspx 上的代码:

            <asp:ListBox AutoPostback="true" ID="lbCarriers" runat="server" Height="86px" Width="250px">
            </asp:ListBox>

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
于 2011-04-12T12:31:48.123 回答