ASP.NET VB.NET - Winforms to Web - реализация элемента управления списком LostFocus для веб-интерфейса - PullRequest
0 голосов
/ 11 апреля 2011

Предыстория: у меня есть приложение winForm, которое регистрирует пользователя в базе данных на основе предоставленной информации, автоматически генерирует случайный пароль и имя пользователя и отправляет пользователю по электронной почте ссылку на приложение для выбранной маркетинговой компании.,

Проблема:

  • Когда пользователь выбирает lbCarrier (s), Пакеты не отображаются в списке b / c, функция lostfocus не работает для asp.сеть.Какой код можно использовать для автоматического заполнения списка Bundles на основе того, что выбрано в списке lbCarrier для ASP.NET.

web app screenshot

Код из 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

Ответы [ 3 ]

2 голосов
/ 11 апреля 2011

Вам нужно будет выполнить некоторый клиентский JavaScript или добавить AutoPostBack в выпадающий список и кодировать событие OnSelectedIndexChanged:

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

Кроме того, событие LostFocus срабатывает только на клиенте, а не насервер, и это событие Javascript под названием "Blur":

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

1 голос
/ 11 апреля 2011

Я бы посоветовал вам использовать 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), которая принимает аргумент строки запроса «Option», который возвращает пакеты для выбранногоноситель.

0 голосов
/ 12 апреля 2011

Я получил список пакетов для заполнения с autopostback, установленный в значение true, но список пакетов заполняется, как только вы нажимаете на lbcarrier, и он не позволяет вам выбрать более одного носителя.

Есть ли у вас какие-либо идеи о том, как разрешить множественный выбор с включенной функцией обратной передачи?

код по умолчанию.aspx:

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

код по умолчанию.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
...