4

我在获取使用 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;  
}

只给我当前页面的计数,而不是总数。

还有其他建议吗?

4

5 回答 5

3

在这些事件中返回的 LinqDataSourceEventArgs 在以下情况下返回 -1:

-1 如果在数据修改操作期间创建了 LinqDataSourceStatusEventArgs 对象;-1 如果通过将 AutoPage 设置为 true 并将 RetrieveTotalRowCount 设置为 false 来启用自定义分页。

查看此处以获取更多信息- 底部的表格显示了要设置的不同属性以获取行数,但看起来您必须将 AutoPage 和 AllowPage 属性设置为 true 或同时设置为 false。

从上面链接中的表格和您提供的示例来看,Autopage 设置为 false,但 AllowPaging 设置为 true,因此它返回页面中的行数。

高温高压

于 2008-08-26T10:54:25.427 回答
0

TotalRowCount 属性仅对 AutoPage 和 AllowPaging 的某些值有效。它们都应该是真的(在你的情况下)或者都是假的。

查看以下页面以了解 TotalRowCount 属性的说明。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linqdatasourcestatuseventargs.totalrowcount.aspx

于 2008-08-26T11:00:06.320 回答
0

好吧,我已经将 AutoPage 和 AllowPaging 设置为 true。我已经通过在调试模式下检查它的值来确认 RetrieveTotalRowCount 设置为 true(找不到更改其值的位置)。

它仍然返回-1。

唯一缺少的是:

-1 如果在数据修改操作期间创建了 LinqDataSourceStatusEventArgs 对象;

我不太确定这意味着什么。我正在使用 LinqDataSource 的修改版本来启用一些自定义过滤,所以这可能是问题所在。另一方面,在调试模式下搞砸时,我确实设法检查了 arguments.TotalRowCount 的值,它是正确的。但在 Selected 事件中出现的值始终为 -1。

于 2008-08-26T15:23:41.897 回答
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;
        }

确保您的活动是“选择

于 2010-07-27T19:56:10.003 回答
0

我遇到了同样的问题。我用以下代码行解决了我的问题

protected void LinqDataSourcePoints_Selected(object sender, LinqDataSourceStatusEventArgs e) { totalRecords = (e.Result as List).Count; }

说明:1-将 e.Result 解析为您的数据源 2-获取计数。

为我完美工作。

于 2010-07-27T06:04:07.683 回答