0

次のaspxマークアップを含む小さなページがあります

<fieldset style="width:40%; margin-left:50px;">
    <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" ClientIDMode="Static" />
    <br /><br />
    <asp:UpdatePanel ID="updplRoleChange"  runat="server" ClientIDMode="Static">
            <ContentTemplate>
                <fieldset id="rolemanagement" style="width:80%;" Visible="false" runat="server" >
                    <legend id="rolemgmtlegend" runat="server"></legend>

                                <asp:Label ID="lblCurrentRole" runat="server"  CssClass="literaltext"></asp:Label><br />
                                <asp:Label ID="lblSiteUserRole" runat="server" CssClass="literaltext"></asp:Label><br /><br />
                                <asp:RadioButtonList id="rblstRoleChange" runat="server">
                                   <asp:ListItem selected="true">Add Role to User</asp:ListItem>
                                   <asp:ListItem>Remove Role from User</asp:ListItem>                                      
                                </asp:RadioButtonList>
                                <asp:DropDownList ID="ddlUserRoles" CssClass="dropdowns" runat="server" AutoPostBack="True" ClientIDMode="Static" /><br />
                                <asp:Button ID="submitrolechange" Text="Submit Role Change" CssClass="buttons"  runat="server" ClientIDMode="Static" Visible="False" />
                </fieldset>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ddlSiteUsers" EventName="SelectedIndexChanged"/>
                <asp:AsyncPostBackTrigger ControlID="submitrolechange" EventName="Click"/>
            </Triggers>
        </asp:UpdatePanel>
</fieldset>

および次のJQuery

<script>
    $(document).ready(function () {
        $('#ddlSiteUsers').change(function() {
            $(this).css({ 'color': 'black', 'font-size': '1.1em', 'font-weight': 'bold' });
        });
        //

        $('#updplRoleChange select').change(function () {
            $('#submitrolechange').show();
            $(this).css({ 'color': 'black', 'font-size': '1.1em', 'font-weight': 'bold' });
        });
    });
</script>

最初の機能は機能しますが、2番目の機能は機能しません。最初のドロップダウンセレクターを使用した後、更新パネル内にマークアップのhtmlが生成されないため、セレクターIDが実際に静的なままであるかどうかさえわかりません。

4

2 に答える 2

0

私はあなたがそのようにライブを使いたいと思います:

$('#updplRoleChange select').live("change", function(e) {
        // Do something exciting
});
于 2013-03-12T16:44:32.243 に答える
0

(設定したとおりに)2番目のドロップダウンリストをAutoPostBack="True"変更すると、色が太字に変わり、サーバーにポストバックされます。

サーバーから戻るとき、予期された動作である以前のクライアント状態を維持しません。

ここに画像の説明を入力してください

以前のクライアントの状態を維持したい場合は、このようなページの読み込み時に何かを行う必要があります。

<fieldset style="width: 40%; margin-left: 50px;">
    <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" ClientIDMode="Static">
        <asp:ListItem Text="One" Value="One" />
        <asp:ListItem Text="Two" Value="Two" />
    </asp:DropDownList>
    <br />
    <br />
    <asp:UpdatePanel ID="updplRoleChange" runat="server" ClientIDMode="Static">
        <ContentTemplate>
            <fieldset id="rolemanagement" runat="server">
                <legend id="rolemgmtlegend" runat="server"></legend>

                <asp:Label ID="lblCurrentRole" runat="server" CssClass="literaltext"></asp:Label><br />
                <asp:Label ID="lblSiteUserRole" runat="server" CssClass="literaltext"></asp:Label><br />
                <br />
                <asp:RadioButtonList ID="rblstRoleChange" runat="server">
                    <asp:ListItem Selected="true">Add Role to User</asp:ListItem>
                    <asp:ListItem>Remove Role from User</asp:ListItem>
                </asp:RadioButtonList>
                <asp:DropDownList ID="ddlUserRoles" CssClass="dropdowns" runat="server" AutoPostBack="True" 
                    ClientIDMode="Static" OnSelectedIndexChanged="ddlUserRoles_SelectedIndexChanged">
                    <asp:ListItem Text="One" Value="One" />
                    <asp:ListItem Text="Two" Value="Two" />
                </asp:DropDownList>
                <asp:Button ID="submitrolechange" Text="Submit Role Change" CssClass="buttons" runat="server" ClientIDMode="Static" Visible="False" />
            </fieldset>

        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ddlSiteUsers" EventName="SelectedIndexChanged" />
            <asp:AsyncPostBackTrigger ControlID="submitrolechange" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
</fieldset>
<script>
    $(document).ready(function () {
        $('#ddlSiteUsers').change(function () {
            $(this).css({ 'color': 'black', 'font-size': '1.1em', 'font-weight': 'bold' });
        });
        //

        $('#updplRoleChange select').change(function () {
            $('#submitrolechange').show();
            $(this).css({ 'color': 'black', 'font-size': '1.1em', 'font-weight': 'bold' });
        });

    });

    function roleChange() {
        if ($('#updplRoleChange select').val() == "Two") {
            $('#updplRoleChange select').css({ 'color': 'black', 'font-size': '1.1em', 'font-weight': 'bold' });
        }
    }
</script>

protected void ddlUserRoles_SelectedIndexChanged(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), UniqueID, "roleChange();", true);
}
于 2013-03-12T17:58:25.117 に答える