gpt4 book ai didi

asp.net - 分页在 AJAX 更新面板内的 asp.net gridview 中不起作用

转载 作者:行者123 更新时间:2023-12-03 15:16:32 25 4
gpt4 key购买 nike

我有一个最初绑定(bind)到 sqldatasource 控件的 asp.net gridview,但是当用户按下外部按钮时,它会获取数据表而不是 SQLdatasource 控件的内容。因此,我不得不在 gridview 的 PageIndexChanging 事件中编写代码以允许分页。我的代码如下:

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()

在我添加了一个 AJAX 更新面板之前,这非常有效,因此整个页面不会在每次分页时回发,并且分页停止工作。我对其进行了调试,发现它实际上是在调用 PageIndexChanging 事件,但什么也没发生。

我在网上搜索,发现有几个人有同样的问题,但他们的解决方案对我不起作用。该站点上有一个问题已通过以下方式解决:

In PageIndexchanging event, where you bind data to grid, make sure, data is again fetched from the DB



我不知道那是什么意思;如上所示,我的数据被绑定(bind)了。我将“启用分页”设置为 true,并将 EnableSortingAndPagingCallbacks 设置为 false。

如果有人可以帮助我,我将不胜感激。我在下面的更新面板中包含了我的标记。非常感谢!
    <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>

最佳答案

In PageIndexchanging event, where you bind data to grid, make sure, data is again fetched from the DB I don't know what that means; my data was being bound as demonstrated above.



这意味着您需要在页面后面的代码中再次获取数据。您在设计/html 页面中使用 SQL 数据源,因此您需要删除它并使用 SQL 连接、SQL 命令等来获取数据,然后将其设置为控件的数据源。

如下所示:

http://www.aspnettutorials.com/tutorials/database/db-grid-aspnet2-vb.aspx

你的代码应该是这样的
Protected Sub Page_Load(...)
gvEvents.PageIndex = 0
LoadData();// loads initial data
end sub

private sub LoadData()
'' do your SQL Conn and Command here
'' set your datasource of gridview here
end sub

Protected Sub gvEvents_PageIndexChanging(...) Handles gvEvents.PageIndexChanging
gvEvents.PageIndex = e.NewPageIndex
LoadData()
gvEvents.DataBind()
end sub

关于asp.net - 分页在 AJAX 更新面板内的 asp.net gridview 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com