0

次のマークアップがあります。

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

問題は、最初のラベルは適切に変更されますが、更新パネルによってページが返されるときに削除されることです。私はグーグルで見つけたさまざまな解決策をすべて試しましたが、どれもうまくいかないようです。今のところ、2つのラベルとドロップダウンのあるフィールドセットは常に表示されます。最終的には、ラベルを正しく表示すると、上部のドロップダウンの選択が変更されるまで、そのフィールドセットは非表示になります。

4

2 に答える 2

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);
于 2013-01-20T22:22:43.697 に答える
0

この方法に従ってください。これはあなたを助けるかもしれません。

Sys.WebForms.PageRequestManager.getInstance()。add_pageLoaded(function(evt、args){//ここにjquery関数を記述します});
于 2015-02-20T13:46:54.077 に答える