繁体   English   中英

嵌套updatePanels中具有分页的ASP.NET Formview-移至下一页时FormView消失

[英]ASP.NET Formview with paging in nested updatePanels - formview disappears when moving to next page

我有一个页面,用户可以从下拉菜单中选择一个中心,然后在updatePanel中显示中心详细信息。 每个中心可以定义一个或多个时间表,因此现在我想添加一个带有页面调度的Formview控件,该控件将允许用户浏览时间表。 时间表将在自定义表中呈现,因此诸如gridview,repeater等控件不是选项。 我在下面显示的Formview代码基于我发现的示例,并且只是为了使基础知识起作用(这不是所需的最终结果)。

选择一个中心,一切都很好。 将显示中心详细信息,以及时间表Formview和页面选择器。 问题是,当我单击分页选择器移至另一个计划时,计划Formview消失了。 如果我从下拉菜单中选择另一个中心,则会显示新的中心详细信息以及时间表Formview,该表单现在显示我在消失之前选择的记录(我应该注意,现在我只是在使用一些虚拟数据时间表对于所有中心都相同;最终,时间表数据将特定于所选中心)。

<div class="form-group row">
    <label for="drpCenters" class="col-sm-2 col-form-label font-weight-bold">Select Center:</label>
    <div class="col-sm-10">
        <asp:DropDownList ID="drpCenters" CssClass="form-control input-sm" runat="server" AutoPostBack="true" OnSelectedIndexChanged="drpCenters_SelectedIndexChanged"></asp:DropDownList>
    </div>
</div>

<asp:UpdatePanel ID="pnlCenter" runat="server" updatemode="Conditional">
    <ContentTemplate>
        <div id="divCenter" style="display:none;">
            <table class="table table-bordered table-sm" style="width:auto;">
                <tr>
                    <th style="text-align:right;">Center Name: </th>
                    <td><asp:Label ID="lblCtrName" runat="server" Text=""></asp:Label></td>
                </tr>
                <tr>
                    <th style="text-align:right;">Center Phone: </th>
                    <td><asp:Label ID="lblCtrPhone" runat="server" Text=""></asp:Label></td>
                </tr>
                <tr>
                    <th style="text-align:right;">Center Email: </th>
                    <td><asp:Label ID="lblCtrEmail" runat="server" Text=""></asp:Label></td>
                </tr>
                <tr>
                    <th style="text-align:right;">Center Director: </th>
                    <td><asp:Label ID="lblDirector" runat="server" Text=""></asp:Label></td>
                </tr>
            </table> 
        </div>
        <asp:UpdatePanel ID="pnlSchedules" runat="server" updatemode="Conditional">
            <ContentTemplate>
                *** this disappears when a record is selected from the paging selector
                <asp:FormView ID="fvSchedules" runat="server" AllowPaging="true" datakeynames="ctrID" OnPageIndexChanging="fvSchedules_PageIndexChanging">
                    <HeaderTemplate>
                        Schedule
                    </HeaderTemplate>
                    <HeaderStyle
                            BackColor="DarkBlue"
                            ForeColor="AliceBlue" 
                            BorderColor="DarkOrange" 
                            BorderStyle="None"
                            BorderWidth="2"
                            Font-Size="Medium"
                            Font-Italic="false"
                            Font-Bold="true"
                            Height="35"
                            HorizontalAlign="Center"
                            />
                    <ItemTemplate>
                        <b>ID:</b> <i><%# Eval("ctrID") %></i>
                        <br />
                        <b>Center:</b> <i><%# Eval("ctrName") %></i>
                    </ItemTemplate>
                    <RowStyle 
                        BackColor="DodgerBlue"
                        ForeColor="AliceBlue"
                        />
                    <PagerSettings Mode="NumericFirstLast" FirstPageText="First" LastPageText="Last" />
                    <PagerStyle BackColor="DarkBlue" ForeColor="AliceBlue" />
                </asp:FormView>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="fvSchedules" EventName="PageIndexChanged" />
            </Triggers>
        </asp:UpdatePanel>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="drpCenters" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

Formview分页的代码如下:

protected void fvSchedules_PageIndexChanging(object sender, FormViewPageEventArgs e)
{
    fvSchedules.PageIndex = e.NewPageIndex;
    fvSchedules.DataBind();
}

有关如何解决此问题的任何想法?

问题似乎是,前进到下一个记录时没有数据绑定,从而导致控件消失。 我发现

protected void fvSchedules_PageIndexChanging(object sender, FormViewPageEventArgs e)
{
    Debug.WriteLine("e.NewPageIndex: " + e.NewPageIndex);
    fvSchedules.PageIndex = e.NewPageIndex;
    // fvSchedules.DataBind();
}

会向我显示返回的索引并注释掉数据绑定,使控件保留在原处(但当然并没有做任何事情)。 因此,对“ Formview分页不前进”的谷歌搜索将我带到了这里: 移动分页时,Formview中的字段没有改变,这使我走上了正确的轨道。 现在我的代码如下:

protected void fvSchedules_PageIndexChanging(object sender, FormViewPageEventArgs e)
{
    fvSchedules.PageIndex = e.NewPageIndex;
    GetSchedules(CtrID);
}

GetSchedules在哪里获取数据并绑定到Formview控件。 到目前为止似乎工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM