0

ソース コードからパネルを更新する 2 つのネストされた updatepanels がありますが、何も有効になりません。コードは次のとおりです

<div style="display:block; clear: left;" runat="server" id="DivLike">
    <asp:UpdatePanel ID="UpdatePanelLike" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <div style="position: relative;">
                <div style="position: absolute; top: 0px; left: 0px;">
                    <asp:LinkButton ID="LinkButtonLike" runat="server" CommandName='<%#Eval("Like_Command") %>'
                    Font-Size="XX-Small" OnCommand="LinkButton2_Command" Text='<%#Eval("Like_Command")%>'></asp:LinkButton>
                </div>
                <div class="popupstyle" style="position:absolute; top:0px; left:0px; display:none;"
                id="DivChapters" runat="server">
                    <asp:UpdatePanel ID="UpdatePanelLinkActivity" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                            <div>Select Chapter:
                                <asp:DropDownList ID="DropDownListChapters" runat="server"
                                AutoPostBack="true" OnSelectedIndexChanged="DropDownListChapters_SelectedIndexChanged"></asp:DropDownList>
                            </div>
                            <div>Select Topic:
                                <asp:DropDownList ID="DropDownListTopics" runat="server"></asp:DropDownList>
                            </div>
                            <div>
                                <asp:LinkButton ID="LinkButtonAddLink" runat="server" OnCommand="LinkButtonAddLink_Command"
                                Text="Add" CssClass="UtilityClass"></asp:LinkButton>
                            </div>
                            <asp:UpdateProgress ID="UpdateProgressLinkActivity" runat="server" AssociatedUpdatePanelID="UpdatePanelLinkActivity"
                            DynamicLayout="True">
                                <ProgressTemplate>
                                    <div style=" position:absolute; top:50%; left:50%; background-color:white;"
                                    id="divLoading">
                                        <img src="Images/loading25.gif" alt="Loading..." style="" />
                                    </div>
                                </ProgressTemplate>
                            </asp:UpdateProgress>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="LinkButtonAddLink" EventName="Command"
                            />
                        </Triggers>
                    </asp:UpdatePanel>
                </div>
            </div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="LinkButtonLike" EventName="Command"
            />
        </Triggers>
    </asp:UpdatePanel>
</div>

以下のコード ビハインドはパネルを更新しますが、どのパネルも更新されません。ただし、デバッガーで分析すると、すべてが完全に割り当てられます。

 protected void DropDownListChapters_SelectedIndexChanged(object sender, EventArgs e )
 {
    DropDownList DDL = (DropDownList)sender;
    DropDownListTopics.DataSource = ChapterDataAccess.GetUserTopics(Convert.ToInt32(DDL.SelectedItem.Value), new Guid(Membership.GetUser().ProviderUserKey.ToString()));
    DropDownListTopics.DataTextField = "Name";
    DropDownListTopics.DataValueField = "Id";
    DropDownListTopics.DataBind();
    ListItem item=new ListItem ("topics","value" );
    DropDownListTopics.Items.Add(item);
    UpdatePanel thepanel= (UpdatePanel)DDL.Parent.Parent;
    UpdatePanel theparentpanel=(UpdatePanel)DDL.Parent.Parent.Parent.Parent.Parent ;
    theparentpanel.Update();
    thepanel.Update();


}
4

1 に答える 1

0

更新パネルに適切にアクセスしているとは思いません..

UpdatePanels が別の Content Placeholders 内に含まれていない場合、親を使用してそれを見つける代わりに、Update Panels に直接アクセスできると思います..

単に

UpdatePanelLinkActivity.Update();
UpdatePanelLike.Update() ;   

すべき..

于 2012-10-01T04:00:30.663 に答える