[英]Total row count in GridView control using LinqDataSource and paging
我在使用Paging和LinqDataSource作为数据源获取Gridview中显示的项目的总行数时遇到问题。
我尝试了几种方法:
protected void GridDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
totalLabel.Text = e.TotalRowCount.ToString();
}
每次返回-1。
protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
System.Collections.Generic.List<country> lst = e.Result as System.Collections.Generic.List<country>;
int count = lst.Count;
}
只给我当前页面的计数,而不是总数。
还有其他建议吗?
在这些情况下,在这些事件中返回的LinqDataSourceEventArgs返回-1:
-1如果在数据修改操作期间创建了LinqDataSourceStatusEventArgs对象; 如果通过将AutoPage设置为true并将RetrieveTotalRowCount设置为false来启用自定义分页,则返回-1。
请在此处查看更多信息 - 底部的表格,显示要设置以获取行计数的不同属性,但看起来您必须将AutoPage和AllowPage属性设置为true或两者都为false。
根据上面链接中的表和您提供的示例判断Autopage设置为false,但AllowPaging设置为true,因此它返回页面中的行数。
HTH
TotalRowCount属性仅对AutoPage和AllowPaging的某些值有效。 它们都应该是真的(在你的情况下)或两者都是假的。
请阅读以下页面,了解TotalRowCount属性的说明。
好吧,我已经将AutoPage和AllowPaging设置为true。 我已经通过在调试模式下检查其值来确认RetrieveTotalRowCount设置为true(无法找到更改其值的位置)。
它仍然返回-1。
唯一缺少的是:
-1如果在数据修改操作期间创建了LinqDataSourceStatusEventArgs对象;
而且我不太清楚这意味着什么。 我正在使用LinqDataSource的修改版本来启用一些自定义过滤,这可能是问题所在。 另一方面,虽然在调试模式下乱搞,我确实设法检查arguments.TotalRowCount的值,它是正确的。 但是Selected事件中出现的值始终为-1。
我遇到了同样的问题。 我用以下代码行解决了我的问题
protected void LinqDataSourcePoints_Selected(object sender,LinqDataSourceStatusEventArgs e){totalRecords =(e.Result as List).Count; }
说明:1 - 将e.Result解析为数据源2 - 获取计数。
对我来说很完美。
试试这个,我已经测试过,它会返回所有行。
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceStatusEventArgs e)
{
System.Collections.Generic.List<country> lst = e.Result as System.Collections.Generic.List<country>;
int count = lst.Count;
}
确保你的活动是“ 选择 ”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.