2013-01-20 3 views
0

다음 마크 업이 있습니다.업데이트 패널에서 jquery가 작동하지 않습니다.

<fieldset style="width:40%;"> 
    <legend> Site User Role Management</legend> 
    <asp:Label ID="lblSiteUserDDl" runat="server" AssociatedControlID="ddlSiteUsers" 
     Text="Manage the roles in which a user is registered by selecting the user from the dropdown list below."></asp:Label> 
    <asp:DropDownList ID="ddlSiteUsers" runat="server" CssClass="dropdowns" AutoPostBack="True" /> 
    <br /><br /> 
    <fieldset id="rolemanagement" style="width:80%;" runat="server" > 
     <legend></legend> 
     <asp:UpdatePanel runat="server"> 
      <ContentTemplate> 
        <asp:Label ID="lblCurrentRole" runat="server" CssClass="literaltext"></asp:Label><br /> 
        <asp:Label ID="lblSiteUserRole" runat="server" CssClass="literaltext"></asp:Label><br /> 
        <asp:DropDownList ID="ddlUserRoles" CssClass="dropdowns" runat="server"/><br /> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="ddlSiteUsers" EventName="SelectedIndexChanged"/> 
      </Triggers> 
     </asp:UpdatePanel> 
    </fieldset> 
</fieldset> 

및 페이지

<script> 
    $(document).ready(function() { 
     $('#<%= ddlSiteUsers.ClientID%> ').change(function() { 
      $(this).css({ 'color': 'black', 'font-size': '1.1em', 'font-weight': 'bold' }); 
      var selecteditem = $(this).children("option:selected").text(); 
      $('#<%= lblCurrentRole.ClientID%>').html("You selected the user: <span style='color:black;font-weight:bold;'>" + selecteditem + "</span>"); 
     }); 
    }); 
</script> 

문제의 하단에있는 다음 스크립트는 첫 번째 레이블이 제대로 변경 않는다는 것입니다하지만 페이지가 업데이트 패널에 의해 반환 될 때 제거됩니다. 나는 구글을 통해 발견 한 모든 다양한 솔루션을 시도했지만 아무도 작동하지 않는 것 같습니다. 지금은 두 개의 라벨과 드롭 다운이있는 필드 세트가 항상 표시됩니다. 궁극적으로 상단 드롭 다운 선택이 변경 될 때까지 해당 필드 세트가 숨겨 지도록 라벨을 올바르게 표시해야합니다.

+0

jquery 's on 기능을 살펴 보셨습니까? http://api.jquery.com/on/ – Dave

답변

1

lblCurrentRole을 업데이트 패널 외부로 이동하거나 값 서버 측을 채 웁니다. 문제는 교체 중이므로 교체 할 컨테이너에서 꺼내거나 값 서버 측을 설정하여 반환 된 HTML이 올바르게 설정되도록해야합니다.

서버 측 스팬 세트를 사용하여 레이블 값을 업데이트합니다.

lblCurrentRole.Controls.Clear(); 

var textSpan = new HtmlGenericControl("span"); 
textSpan.InnerText = "You selected the user: "; 
lblCurrentRole.Controls.Add(textSpan); 

var userSpan = new HtmlGenericControl("span"); 
userSpan.InnerText = ddlSiteUsers.SelectedValue; 
userSpan.Attributes.Add("class","selected-user"); 
lblCurrentRole.Controls.Add(userSpan); 
+0

필자는 코드의 텍스트를 확실하게 설정할 수 있습니다. 실제로 시작했습니다. 그렇게하면 span 태그를 어떻게 추가해야 사용자 이름을 굵게 표시 할 수 있습니까? – dinotom

+0

span에 'HtmlGenericControl' 세트를 추가 할 수 있습니다. 아마도 텍스트의 첫 번째 부분을 포함하는 두 개의 span과 강조된 부분을 포함하는 두 개의 span을 추가 할 수 있습니다. 스타일을 직접 설정하기보다는 원하는 스타일에 해당하는 클래스를 사용합니다. – tvanfosson

+0

필자는 결코 전에 그것을 사용하지 않았다. 예를 보여줄 수 있습니까? – dinotom

0

이 방법을 따르십시오. 이것은 당신을 도울 수 있습니다. .

Sys.WebForms.PageRequestManager.getInstance() add_pageLoaded (기능 (EVT, 인수) { // 여기에 JQuery와 함수를 작성 });
관련 문제