从启用分页的 GridView 控件中检索所有 GridViewRow 对象
目前,我的 aspx 页面上有一个启用分页的 GridView 控件,我需要循环遍历整个行集合/计数来处理选定的记录。 使用我当前的代码,它只会循环遍历 GridView 行的当前页面。
完成这项任务的最佳方法是什么?
这是我当前的代码:
ASPX页面:
<asp:GridView ID="MyGridView" runat="server" AllowPaging="true" PageSize="20">
<Columns>
<!-- My Column list -->
</Columns>
</asp:GridView>
<asp:Button id="MyButton" runat="server" Text="Add" OnClick="MyButton_Click" />
代码隐藏:
protected void MyButton_Click(object sender, EventArgs e)
{
for (int Count = 0; Count < MyGridView.Rows.Count; Count++)
{
//The row count is 20 and only contains the GridViewRow object in the current page view
//I want to retrieve the all GridViews rows so I can add them to a ReorderList control
}
}
I currently have a GridView control on my aspx page with paging enabled and I need to loop through the entire row collection/count to process the selected records. With my current code, it will only loop through the current page of GridView row.
What is the best way to accomplish this task?
Here is my current code:
ASPX page:
<asp:GridView ID="MyGridView" runat="server" AllowPaging="true" PageSize="20">
<Columns>
<!-- My Column list -->
</Columns>
</asp:GridView>
<asp:Button id="MyButton" runat="server" Text="Add" OnClick="MyButton_Click" />
code behind:
protected void MyButton_Click(object sender, EventArgs e)
{
for (int Count = 0; Count < MyGridView.Rows.Count; Count++)
{
//The row count is 20 and only contains the GridViewRow object in the current page view
//I want to retrieve the all GridViews rows so I can add them to a ReorderList control
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
是的,因为你的 gridview UI 只知道当前页面。
获取数据源并确定行数...
//或者
Yes because your gridview UI is only aware of the current page.
Get the datasource and determine the row count from there...
//or
只需使用以下代码:
这可能对您有帮助,请告诉我这是否对您有帮助......
Simply use the following code:
This may help you, let me know if this was helpful for you...
我认为您应该从数据源的行数中获取行数。
如果需要过滤行,可以使用DataTable/DataView的Select方法。
编辑: 如果 gridview 分页,则无法通过 gridview.Rows.Count 获取实际行数。 根据您的评论,我假设您使用 listDataSource 通用列表来绑定 gridview,您可以将行数获取为:
I think you should get the row count from your data source's row count.
If you need to filter rows, you can use DataTable's / DataView's Select method.
EDIT : You can not get actual row count by gridview.Rows.Count if gridview is paged. Depending on your comment, I assume that you're using listDataSource generic list to bind your gridview, you can get your row count as :
使用会话或状态来存储:
从数组列表中,您可以获取要循环的所有行索引,并通过分页从网格视图中获取值。
use session or state to store:
from the arraylist you can get all row index to loop and get the value from the gridview with paging.
@CRice 的答案应该是官方答案。
这是我的解决方案。 您需要通过其
DataSource
将 gridview 的数据预先保存到ViewState
或Session
中。GridView.Rows 仅指“可见”行,或当前在屏幕上显示的页面。
接下来,当改变页面时,我们在这里保存数据,
希望代码能说明一切。
谢谢
@CRice's answer should have been the official answer.
Here is my solution. You need to presave the gridview's data, via its
DataSource
, intoViewState
orSession
.GridView.Rows only refers to the "visible" rows, or the page currently shown on the screen.
Next, when changing pages, here we save the data
I hope the code speaks for itself.
Thanks