Mam gridview asp.net, który jest pierwotnie związany z formantem sqldatasource, ale gdy użytkownik naciśnie przycisk zewnętrzny, zamiast tego pobiera zawartość z datatable, a nie Kontrola SQLdatasource. W związku z tym musiałem napisać kod w zdarzeniu PageIndexChanging widoku siatki, aby umożliwić stronicowanie. Mój kod wygląda następująco:Paging nie działa w asp.net gridview wewnątrz AJAX updatepanel
Protected Sub gvEvents_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvEvents.PageIndexChanging
gvEvents.PageIndex = e.NewPageIndex
gvEvents.DataBind()
To działało pięknie aż dodałem panelu aktualizacji AJAX więc cała strona nie byłoby ogłaszanie każdym razem Paged i stronicowania przestał działać. Debugowałem go i odkryłem, że faktycznie wywołuje to wydarzenie PageIndexChanging, ale nic się nie dzieje.
Przeszukałem internet i znalazłem kilka osób z tym samym problemem, ale ich rozwiązania nie sprawdziły się u mnie. Był jeden na tej stronie, której problem został rozwiązany brzmienie:
W przypadku PageIndexchanging, gdzie można powiązać dane do siatki, upewnij się, dane są ponownie pobierane z DB
I don” wiesz co to znaczy; moje dane były związane, jak wykazano powyżej. Mam "włącz stronicowanie" ustawione na true, a EnableSortingAndPagingCallbacks na false.
Byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc. Załączam mój znacznik dla updatepanel poniżej. Dziękuję bardzo!
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ibtnSearch" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="gvEvents" runat="server" DataKeyNames = "intID"
AutoGenerateColumns="False" AllowPaging="True" GridLines="None" CellPadding="10"
ForeColor="#333333" PageSize="6" DataSourceID="defaultDS" >
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<Columns>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<!-- put code block inside label? To set the formatter to include year if
it's next year? -->
<asp:Label ID="Label1" runat="server"
Text = '<%# RepeatingMethods.DetermineOngoing(CType(Eval("dtmEventStartDate"), DateTime) , CType(Eval("dtmEventEndDate"), DateTime))%>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("chvAgeRange") %>'> </asp:Label> <br />
<asp:Label ID="Label3" runat="server" Text= '<%# Eval("chvState") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="intId"
DataNavigateUrlFormatString="EventDetail.aspx?intId={0}"
DataTextField="chvEventName" />
<asp:BoundField DataField="chvBriefDescription" HeaderText="Description"
SortExpression="chvBriefDescription" />
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White"></FooterStyle>
<PagerStyle HorizontalAlign="Center" BackColor="#FFCC66" ForeColor="#333333"></PagerStyle>
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy"></SelectedRowStyle>
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White"></HeaderStyle>
<AlternatingRowStyle BackColor="White"></AlternatingRowStyle>
</asp:GridView>
<asp:Label ID="lblError" runat="server"></asp:Label>
<br />
</ContentTemplate>
</asp:UpdatePanel>
Nie widzę nawet Twojego kodu źródła danych. –
Oto część z nich (to długa sub - Nie mogę umieścić to wszystko w) searchConnection.Open() searchCommand = Nowa SqlCommand (searchString, searchConnection) searchAdapter = Nowa SqlDataAdapter (searchCommand) searchDatatable = Nowa DataTable searchAdapter.Fill (searchDatatable) Jeśli searchDatatable.Rows.Count> 0 Then gvEvents.DataSourceID = Nothing gvEvents.DataSource = searchDatatable gvEvents.DataBind() –