2013-01-20 91 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> 

问题的底部下面的脚本是第一个标签正确实现改变,但是当页面被更新面板返回被删除。我尝试了所有通过google找到的各种解决方案,但似乎没有任何效果。现在,带有两个标签和下拉菜单的字段集总是可见的,最终一旦我得到标签正确显示,该字段集将隐藏,直到上拉选择更改。

+0

你看过jQuery的功能吗? 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',可能会添加两个跨度,一个包含文本的第一部分,另一个包含突出显示的部分。我会在对应于您想要的样式的跨度上使用一个类,而不是直接设置样式。 – tvanfosson

+0

我以前从未使用过。你能告诉我一个例子吗? – dinotom

0

请按照这个方法。这可能会帮助你。 。

Sys.WebForms.PageRequestManager.getInstance()add_pageLoaded(函数(EVT,参数){// 在这里写下你的jQuery函数 });