10

大家好

如何获取 ObjectDataSouce 的行数?

我使用 ObjectDataSource 和 DataList 。当 ObjectDataSource 返回某些行时,我想向用户显示一些东西,例如在标签中。一种情况是没有记录时。

谢谢你 。

4

7 回答 7

8

我一直在寻找相同的答案...我最终使用的另一个解决方案如下: 这是在 .aspx 页面后面的 .vb 文件上找到的。它处理数据源的“选定”事件。

Protected Sub ObjectDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles ObjectDataSource1.Selected
    ' Select data for rowcount
    Dim dt As DataTable = e.ReturnValue
    ' Set row count label
    Me.lblCount.Text = dt.Rows.Count.ToString
End Sub
于 2011-06-23T19:24:19.097 回答
7

ObjectDataSource没有直接的方法来获取总行数。原因之一是,如果您想要的只是总行数,那么您根本不需要数据源!要获取行数,只需与您的业务逻辑层 (BLL) 交谈并获取总行数:

MyBLL bll = new MyBLL();
int customerRowCount = bll.Customers.GetRowCount();

ObjectDataSource确实有一个SelectCountMethod可以在需要访问总行数等数据绑定控件时使用GridView。但是,这仅在执行 Select 操作时使用。也就是说,没有办法获取行数。行计数仅用于数据绑定控件可以显示寻呼机控件 - 它不用于其他任何内容。

于 2010-01-02T23:42:09.370 回答
5

在这里找到这个:

bool bGetSelectCount;
protected void ObjectDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
    if (bGetSelectCount)
        TextBox1.Text = e.ReturnValue.ToString(); 
}

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    bGetSelectCount = e.ExecutingSelectCount;
}
于 2012-01-17T22:50:49.530 回答
0

您可以使用寻呼机模板非常简单地实现这一点,例如

       <asp:DataPager PagedControlID="PagedControlId" PageSize="20" QueryStringField="QueryStringName" ID="InfoPager" runat="server">
           <Fields>
               <asp:TemplatePagerField>
                   <PagerTemplate>
                        Showing results 
                        <%=InfoPager.StartRowIndex + 1 %> 
                        to 
                        <%= (new []{(InfoPager.StartRowIndex + InfoPager.PageSize),InfoPager.TotalRowCount})
                                      .OrderBy(x => x)
                                      .First()%> 
                        of 
                        <%=InfoPager.TotalRowCount %>
                   </PagerTemplate>
               </asp:TemplatePagerField>
           </Fields>
       </asp:DataPager>

这将生成文本“Results x to y of z”,包括最后一页的检查。

干杯,

埃德

于 2010-10-15T14:33:04.240 回答
0
Protected Sub objItemsList_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles objItemsList.Selected
    lblMessage.Text = DirectCast(e.ReturnValue, DataTable).Rows.Count & " record(s) found"
End Sub
于 2012-02-12T19:07:26.463 回答
0

在我的情况下,ObjectDatasource 是一个数据集,所以我在 objectdatasource_selected 事件中得到行号,如下所示

e.ReturnValue.tables(0).rows.count.ToString 
于 2014-03-11T08:37:36.390 回答
0
Protected Sub myODS_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles myODS.Selected
    Dim s As String = e.ReturnValue.ToString
    Dim rows As Integer
    Int32.TryParse(s, rows)

    'rows variable now holds the total number of results, not just what's displayed on the current gridview page
End Sub
于 2016-05-10T20:28:15.167 回答