【发布时间】:2017-09-03 07:26:19
【问题描述】:
我正在像这样在UpdatePanel 中创建一个GridView:
<asp:ScriptManager runat="server" EnablePartialRendering="true" />
<div id="masterHistoryDialog" style="display: none">
<asp:UpdatePanel runat="server" ChildrenAsTriggers="true" UpdateMode="Always">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="historyRepeater" EventName="PageIndexChanging" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="historyRepeater" AutoGenerateColumns="false" runat="server" AllowPaging="true" AllowSorting="false" PagerSettings-NextPageText="Next" PagerSettings-PreviousPageText="Previous" PageSize="4" OnPageIndexChanging="historyRepeater_PageIndexChanging">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<uc:CustomCalendarControl ChangeID='<%# DataBinder.Eval(Container.DataItem, "Item1") %>' ScheduleID='<%# DataBinder.Eval(Container.DataItem, "Item2") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
PageIndexChanging 事件按预期触发,调用以下事件处理程序:
Protected Sub historyRepeater_PageIndexChanging(sender As Object, e As GridViewPageEventArgs)
historyRepeater.PageIndex = e.NewPageIndex
historyRepeater.DataSource = GetSchedules()
historyRepeater.DataBind()
End Sub
CustomCalendarControl 是一个自定义控件。
我确认GetSchedules 实际上正在获取我的整个数据集。
我对数据进行分页,每页有 4 个自定义控件(5 页共 20 个项目)。第一页正常工作。但是,当我尝试导航到其他页面之一时,自定义控件的初始化失败,因为它没有获得 ChangeID 或 ScheduleID 的实际值 - 它们始终为 0。
当我调用 DataBind() 时它失败了,因为自定义控件的初始化取决于 ChangeID 和 ScheduleID 是实际的 ID。
我该如何解决这个问题?
【问题讨论】:
标签: asp.net vb.net webforms asp.net-ajax aspxgridview