2011-04-11 5 views
0

배경 : 제공되는 정보를 기반으로 데이터베이스에 사용자를 등록하는 winForm 앱이 있으며, 임의의 암호와 사용자 이름, 선택한 마케팅 회사를 기반으로 애플리케이션을 가져 오기위한 링크를 사용자에게 전자 메일로 보냅니다.ASP.NET VB.NET - 웹용 Winforms - 웹 용 LostFocus listview 컨트롤 구현

문제점 :

  • 사용자가 lbCarrier (들)을 선택

    이 번들이 lostfocus 기능 asp.net 작동하지 않고 C/b를 목록 상자에 표시되지 않는다. ASP.NET 용 lbCarrier 목록 상자에서 선택된 항목을 기반으로 번들 목록 상자를 자동으로 채우는 데 사용할 수있는 코드는 무엇입니까? default.aspx.vb에서

web app screenshot

코드 :

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 

답변

2

당신은 몇 가지 클라이언트 측 자바 스크립트를해야하거나, 드롭 다운리스트와 코드 OnSelectedIndexChanged 이벤트 상 AutoPostBack을 추가 할 것 :

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

또한 LostFocus 이벤트는 서버가 아닌 클라이언트에서만 발생하며 Javascr "블러"라고 IPT 이벤트 :

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

+0

감사합니다! 나는 번들 목록 상자에 autopostback이 true로 설정된 채 채울 수 있지만 번들 목록 상자는 lbcarrier를 클릭하자마자 채워지고 다중 선택을 허용하지 않습니다. 다시 게시 기능을 사용하여 다중 선택을 허용하는 방법에 대한 아이디어가 있습니까? –

+0

나는 당신이 이것에 대해 또 다른 질문을 올린 것을 알아 채 셨습니다 - 당신이 필요한 대답을 얻었습니까? 기본적으로 AutoPostBack과 다중 선택을 같은 목록 상자에서 사용할 수는 없습니다. 클라이언트에서 jQuery 및 Ajax와 같은 것을 사용해야하거나 (사용자가 선호하는 방법) 사용자가 제출 단추를 클릭하고 선택 사항을 처리 한 다음 결과를 다시 게시 할 때까지 기다려야한다. 귀하의 회신에 감사드립니다 – camainc

1

난 당신이 jQuery를 사용하여 조사 제안했다. 클라이언트 측 프로그래밍을 훨씬 간단하게 만듭니다. 포커스를 잃어 버렸을 때 서버에 요청을 비동기 적으로 수행 한 다음 서버가 목록 상자에 표시하려는 데이터 만 리턴하도록해야합니다.

이 메인 페이지 하단에 가야한다 :

<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)를 만들어야합니다 번들을 반환합니다 "옵션"의 쿼리 문자열 인수를 받아 선택한 캐리어에 대해

+0

.$ ("# lbBundles") ....... 부분 다음에는 mehtod의 모든 코드를 넣어야합니다. Private Sub lbCarriers_LostFocus? 그 문법은 무엇이겠습니까? –

+0

LostFocus 코드는 "getlist.aspx"페이지에 있어야합니다. 이 페이지는 실제 "페이지"가 ​​아니며 단지 목록에 넣을 데이터를 제공합니다. 코드를 Page_Load 이벤트에 배치하고 완료되면 Response.Write (...) 및 Response.End()를 호출합니다. 클라이언트에서 다시 처리하는 방법은 목록 형식 (쉼표로 구분 된/JSON (Javascript Object Notation))에 따라 결정됩니다. –

+0

JQuery Ajax를 사용하려면 호출 할 서버에 웹 메소드가 있어야한다. 이 메서드는 JSON 객체를 반환합니다.이 객체를 구문 분석하고 DOM에 추가 할 수 있습니다. 다음은 시작할 수있는 기본 문서입니다. http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/ Google 'Asp .Net WebForms JQuery Ajax " – camainc

0

autobostback이 true로 설정된 채울 수있는 목록 상자가 있지만 lb 케리어를 클릭하자마자 번들 목록 상자가 채워지고 둘 이상의 이동 통신사를 선택할 수 없습니다.

다시 게시 기능을 사용하여 다중 선택을 허용하는 방법에 대한 아이디어가 있습니까? default.aspx에에

코드 : default.aspx.vb에

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

코드 : 당신의 응답을

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