0

背景:提供された情報に基づいてデータベースにユーザーを登録し、ランダムなパスワードとユーザー名を自動生成し、選択したマーケティング会社に基づいてアプリケーションを取得するためのリンクをユーザーに電子メールで送信する winForm アプリがあります。

問題:

  • ユーザーが lbCarrier を選択すると、リストボックスにバンドルが表示されません。b/c ロストフォーカス機能が asp.net で機能しません。ASP.NET の lbCarrier リストボックスで選択されているものに基づいて、バンドル リストボックスを自動入力するために使用できるコードは何ですか?

ウェブアプリのスクリーンショット

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 イベントはサーバーではなくクライアントでのみ発生し、「ぼかし」と呼ばれる 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>

選択したキャリアのバンドルを返す "Option" のクエリ文字列引数を受け入れる 2 番目のページ (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 に答える