2009-12-13 17 views
10

Hola a todosCómo obtener el recuento de filas de ObjectDataSource

¿Cómo puedo obtener el recuento de filas de ObjectDataSouce?

Uso ObjectDataSource y DataList. Quiero mostrarle algo al usuario, por ejemplo, en una etiqueta cuando hay cierta fila devuelta por ObjectDataSource. Una de las situaciones es cuando no hay registro.

Gracias.

Respuesta

7

que estaba buscando la misma respuesta ... Otra solución que terminé usando es el siguiente: Esto se encuentra en un archivo .vb detrás de una página .aspx. Maneja el evento "seleccionado" de la fuente de datos.

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 
7

El ObjectDataSource no tiene una forma directa de obtener el recuento total de filas. Una de las razones para esto es que si lo único que desea es el recuento total de filas, entonces ¡no necesita la fuente de datos en absoluto! Para obtener el número de filas simplemente hablar con su capa de lógica de negocios (BLL) y obtener las filas totales:

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

El ObjectDataSource tiene un SelectCountMethod que se puede utilizar cuando los datos de los controles ligados tales como el GridView necesidad de acceder al recuento total de filas Sin embargo, esto solo se usa mientras se realiza una operación Select. Es decir, no hay forma de que obtenga el recuento de filas. El recuento de filas solo se usa para que el control de datos enlazados pueda mostrar un control de buscapersonas, no se usa para nada más.

0

Puede lograr esto de manera muy simple con una plantilla de localizador, p.

 <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> 

Esto producirá el texto "Resultados x a y de z" incluyendo un cheque para la última página.

Saludos,

Ed

3

encontrado este here:

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; 
} 
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 
+1

Bienvenido para stackoverflow! Siempre es mejor proporcionar una breve descripción de un código de muestra para mejorar la precisión de la publicación :) –

0

En mi caso, el ObjectDataSource es un conjunto de datos, por lo que obtener el número de fila en caso objectdatasource_selected como esto

e.ReturnValue.tables(0).rows.count.ToString 
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 
Cuestiones relacionadas