【问题标题】:jquery not working with update paneljquery 不能使用更新面板
【发布时间】:2013-01-20 22:15:29
【问题描述】:

我有以下标记;

 <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>

问题是第一个标签确实更改了,但在更新面板返回页面时被删除。我已经尝试了通过谷歌找到的所有各种解决方案,但似乎都没有奏效。目前,带有两个标签和下拉菜单的字段集始终可见,最终一旦我让标签正确显示,该字段集将被隐藏,直到上方的下拉选择更改。

【问题讨论】:

标签: jquery updatepanel


【解决方案1】:

lblCurrentRole 移出更新面板或填充它的值服务器端。由于问题在于它正在被替换,因此您需要将其保留在被替换的容器之外或设置值服务器端,以便返回的 HTML 将其设置正确。

在服务器端使用一组 span 来更新标签的值。

 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);

【讨论】:

  • 我当然可以在后面的代码中设置文本,我实际上是从那个开始的。如果我这样做,那么如何添加跨度标签然后将用户名加粗?
  • 您可以将HtmlGenericControl 集添加到跨度,可能添加两个跨度,一个包含文本的第一部分,另一个包含突出显示的部分。我会在跨度上使用与您想要的样式相对应的类,而不是直接设置样式。
  • 谢谢,看起来有效。我会测试它
【解决方案2】:

请按照这个方法。这可能会对您有所帮助。

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (evt, args) { //在这里写你的jquery函数 });

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2015-07-12
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多