我在使用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;
}
只给我当前页面的计数,而不是总计。
还有其他建议吗?
答案 0 :(得分:3)
在这些事件中返回的LinqDataSourceEventArgs在这些情况下返回-1:
如果在数据修改操作期间创建了LinqDataSourceStatusEventArgs对象,则-1;如果通过将AutoPage设置为true并将RetrieveTotalRowCount设置为false来启用自定义分页,则返回-1。
Check here for more information - 底部的表格显示了设置为返回rowcount的不同属性,但看起来您要么必须将AutoPage和AllowPage属性设置为true或两者都为false。
根据上面链接中的表和您提供的示例判断Autopage设置为false,但AllowPaging设置为true,因此它返回页面中的行数。
HTH
答案 1 :(得分:0)
TotalRowCount属性仅对AutoPage和AllowPaging的某些值有效。它们都应该是真的(在你的情况下)或两者都是假的。
请阅读以下页面,了解TotalRowCount属性的说明。
答案 2 :(得分:0)
好吧,我已经将AutoPage和AllowPaging设置为true。 我已通过在调试模式下检查其值来确认RetrieveTotalRowCount设置为true(无法找到更改其值的位置)。
它仍然会返回-1。
唯一缺少的是:
如果在数据修改操作期间创建了LinqDataSourceStatusEventArgs对象,则-1;
我不太清楚这意味着什么。 我正在使用LinqDataSource的修改版本来启用一些自定义过滤,这可能是问题所在。另一方面,虽然在调试模式下乱搞,我确实设法检查arguments.TotalRowCount的值,它是正确的。但是在Selected事件中出现的值总是-1。
答案 3 :(得分:0)
我遇到了同样的问题。我用以下代码行解决了我的问题
protected void LinqDataSourcePoints_Selected(object sender,LinqDataSourceStatusEventArgs e) { totalRecords =(e.Result as List).Count; }
说明: 1-paarse e.Result作为您的数据源 2 - 获得计数。
完美地为我工作。
答案 4 :(得分:0)
尝试这个,我已经测试过,它会返回所有行。
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;
}
确保您的活动是“选择”