2009-10-09 5 views
0

사용자가 아래로 내려가는 목록에서 항목을 선택하면 "로드 중 ..."메시지를 표시하려고합니다.드롭 다운 목록의 SelectedIndexChanged 이벤트에 메시지로드

마크 업 : 뒤에

<asp:Label ID="lbl_LoadingMessage" runat="server" ></asp:Label> 

<asp:DropDownList ID="ddl_Chapter" runat="server" AutoPostBack="True"> 
      </asp:DropDownList> 

코드 : 제가 위에서 사용하고 방법은 작동하지 않습니다

Protected Sub LoadMessage() 
     lblLoading.Text = "Loading..." 
End Sub 


Protected Sub ddl_Chapter_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl_Chapter.SelectedIndexChanged 

     LoadMessage() 

     Dim redirectURL As String = "~/chapter.aspx?bid=" & BookId.ToString 
     Server.Transfer(redirectURL) 

End Sub 

. 드롭 다운 목록에서 새 항목을 선택하면 "Loading ..."메시지가 전혀 표시되지 않는 것을 제외하고 예상대로 작동합니다. 모든 제안이나 코드 샘플? 고맙습니다.

답변

1

자바 스크립트를 사용하여 클라이언트 측에서이 작업을 수행해야합니다.

현재 드롭 다운 메뉴에서 다시 게시가 발생하고 있습니다. 드롭 다운 메뉴가 변경되면 페이지 게시물이 백업되고 전체 페이지 수명주기가 실행됩니다. ddl_Chapter_SelectedIndexChanged 이벤트가 실행되면로드 레이블의 텍스트를 설정하지만로드하는 메시지가있는 페이지를 다시로드하지 않고 대신 server.transfer를 새 페이지로로드합니다.

$('#the_full_renedered_ID_of_ddl_Chapter').change(function() { 
     $('#the_full_renedered_ID_of_lbl_LoadingMessage').html("Loading...") 
}); 
+0

무엇을의 I 쓴 :

0

페이지 재 렌더링이 수행되기 전에 전체 이벤트가 실행됩니다.

LoadMessage()Server.Transfer 사이의 추가 처리를 수행하려는 경우 AJAX UpdateProgress 패널을 사용하고 "loading ..."메시지를 추가하고 dropPadel에 dropDownList를 추가하십시오.

SelectedIndexChanged 이벤트에서 실행해야하는 코드에 따라 부분 페이지 다시 게시를 통해 "로드 중 ..."메시지가 표시됩니다.

예컨대

<asp:ScriptManager id="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 

    <asp:UpdateProgress id="UpdateProgress1" runat="server" associatedUpdatePanelID="UpdatePanel1"> 
     <ProgressTemplate> 
      <p>Loading....</p> 
     </ProgressTemplate> 
    </asp:UpdateProgress> 

    <asp:UpdatePanel id="UpdatePanel1" runat="server" childrenAsTriggers="true"> 
     <ContentTemplate> 
      <asp:DropDownList id="DropDownList1" runat="server" autoPostBack="true"> 
       <asp:ListItem selected="True" value="1">Book 1</asp:ListItem> 
       <asp:ListItem value="2">Book 2</asp:ListItem> 
       <asp:ListItem value="3">Book 3</asp:ListItem> 
       <asp:ListItem value="4">Book 4</asp:ListItem> 
       <asp:ListItem value="5">Book 5</asp:ListItem> 
      </asp:DropDownList> 

      <asp:Label id="lblSelected" runat="server"></asp:Label> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

은 "로드 ..."메시지가 당신의 SelectedIndexChanged 이벤트에 달성하려고하는 일의 처리 기간 동안 표시됩니다 이런 식으로. 이것은 단순히 표시 이유 때문에 javaScript가 최선의 방법입니다.

0

또는 자바 스크립트를 사용 : 당신이 jQuery를 사용하는 경우

, 당신은 즉시 드롭 다운이

일 등이 변경 될 때 레이블의 텍스트 값을 설정할 수 있습니다

다음
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" /></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $("#<%= ddl_Chapter.ClientID %>").change(function() 
    { 
     window.alert("Loading"); 
    });  
}); 
</script> 
관련 문제