使用LinqDataSource和分页的GridView控件中的总行数

时间:2008-08-26 10:31:46

标签: c# asp.net linq gridview

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

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

还有其他建议吗?

5 个答案:

答案 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属性的说明。

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

答案 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;
        }

确保您的活动是“选择