Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Filas de un DataGrid

1,299 views
Skip to first unread message

Rubén

unread,
Nov 15, 2004, 4:02:41 PM11/15/04
to
Hola a todos.
Quisiera saber si hay alguna forma de obtener el número de
filas y columnas desplegadas en un DataGrid.

Gracias.

Angel. E. Ruiz. Pastor

unread,
Nov 15, 2004, 8:03:53 PM11/15/04
to
Estimado Rubén,

Amigo prueba con este código:

DataGrid1.VisibleRowCount

DataGrid1.VisibleColumnCount

O

TuDataSet.TuTabla.Rows.Count()

TuDataSet.TuTabla.Columns.Count()


Saludos cordiales,
Ángel Ruiz
[MS Visual Basic Developer MVP]
Caracas - Venezuela

"El conocimiento es un bien, que crece a medida que se comparte"


"Rubén" <anon...@discussions.microsoft.com> wrote in message
news:6d9d01c4cb56$720bd2e0$a301...@phx.gbl...

Rubén

unread,
Nov 16, 2004, 7:18:07 AM11/16/04
to
Hola Ángel,
si no me equivoco, con la primera opción que me aconsejas
solo se obtiene el número de filas y columnas que están
visibles en el DataGrid. Yo lo que quería obtener es el
número de filas y columnas totales de la tabla del DataSet
asociado al DataGrid.

El problema es que no sé como acceder al DataSet, desde el
DataGrid. He probado un Cast que no me funciona, aunque
creo que no es una buena técnica de programación:

Dim otroDataSet As New DataSet
otroDataSet = CType(DataGrid1.DataSource, DataSet)

Gracias y espero tu consejo.
>-----Mensaje original-----

>.
>

Ezequiel

unread,
Nov 16, 2004, 8:06:43 AM11/16/04
to
Haz una consulta a la tabla pasándole la clave principal y cuenta el
resultado, un ejemplo:
Function Lineas_Grid(ByVal Id_Entrada As Integer, ByVal tabla As String) As
Integer

Dim oDataView As New DataView

oDataView.Table = Me.DataSet_Recepcion1.Tables(tabla)

oDataView.RowFilter = "Id_Entrada = '" & Id_Entrada & "'"

Lineas_Grid = oDataView.Count

oDataView.Dispose()

End Function

Como verás es una función a la cual le paso un número y la tabla, adaptalo
tu a lo tuyo.... :)

PD.: te aconsejo te olvides del DataGrid que trae Microsoft y utilices otros
Datagrid de terceros que sean gratuitos, por ejemplo el TrueDBGrid de
ComponentOne.


"Rubén" <anon...@discussions.microsoft.com> escribió en el mensaje
news:6d9d01c4cb56$720bd2e0$a301...@phx.gbl...

Imac_Man

unread,
Nov 16, 2004, 10:25:02 AM11/16/04
to
Rueben, dejame ayudarte con algo....

si tienes una dataset, que llena una datagrid, automaticamente los dos estan
realcionados, es decir que si tu cuentas los registros de tu dataset notaras
que son los mismos que estan en tu datagrid....para que te des cuenta de
esto, has los siguiente llena el datagrid con tu dataset y luego con algun
boton manda la siguiente instruccion

dataset.tables(0).clear

notaras que el que se limpia es el datagrid, por lo que resulta lo mismo si
cuentas los registros del dataset para saber los del datagrid.

"Rubén" <anon...@discussions.microsoft.com> escribió en el mensaje

news:10e901c4cbd6$545c46f0$a501...@phx.gbl...

Angel. E. Ruiz. Pastor

unread,
Nov 16, 2004, 8:48:39 PM11/16/04
to
Estimado Rubén,

Tienes toda la razón en la primera lo coloque por entendí que querías eso.
me pudieras colocar la forma como carga los datos al Datagrid para poderte
ayudar en tu caso.


Saludos cordiales,
Ángel Ruiz
[MS Visual Basic Developer MVP]
Caracas - Venezuela

"El conocimiento es un bien, que crece a medida que se comparte"

"Rubén" <anon...@discussions.microsoft.com> wrote in message

news:10e901c4cbd6$545c46f0$a501...@phx.gbl...

Rubén

unread,
Nov 17, 2004, 7:41:48 AM11/17/04
to
Hola Ángel,
te cuento como tengo el código, ten en cuenta que soy
novato y que la aplicación es para Pocket PC:


Tengo un formulario "form1" donde muestro los datos de una
tabla en un DataGrid.
Con un botón, abro otro formulario "formInsert" donde
capturo datos y hago un INSERT en la tabla.
Tengo una clase con los procedimientos de acceso a la base
de datos "RdaInterface", como tengo que utilizar la
instancia desde los 2 formularios la he declarado Shared,
quiza los problemas vienen de aqui, se que no es muy correcto.

|-----------------------------------|
Public Class Form1
Inherits System.Windows.Forms.Form
Friend WithEvents DataGrid1 As
System.Windows.Forms.DataGrid
Friend WithEvents Button1 As System.Windows.Forms.Button


Public Shared rdaI As RdaInterface = New RdaInterface


Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click

DataGrid1.DataSource =
rdaI.SelectTodo.Tables("Clientes")

End Sub

Private Sub Button2_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
Dim f2 As New FormInsert
f2.Show()
End Sub

End Class
|-----------------------------------|
Public Class FormInsert
Inherits System.Windows.Forms.Form
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
Friend WithEvents TextBox3 As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Button2 As System.Windows.Forms.Button

Private Sub Button2_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button2.Click
Close()
End Sub

Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click

Dim col1 As String = TextBox1.Text
Dim col2 As String = TextBox2.Text
Dim col3 As String = TextBox3.Text

Form1.rdaI.InsertFila(col1, col2, col3)

End Sub
End Class
|-----------------------------------|

La función "SelectTodo" devuelve un DataSet, que lo enlazo
al DataGrid, (los datos se supone que ya están locales en
el dispositivo) este es el código:

|-----------------------------------|
Public Function SelectTodo() As DataSet

Try
'Nos conectamos al SQL Server CE.
_cn = New
System.Data.SqlServerce.SqlCeConnection("Data Source= " &
_baseDeDatosLocalString)
_cmd = New
System.Data.SqlServerCE.SqlCeCommand("SELECT CodCliente,
Descripcion, telefono FROM clientesLocal", _cn)
_da = New
System.Data.SqlServerCE.SqlCeDataAdapter(_cmd)

'Creamos una nueva tabla (DATATABLE).
Dim dt As System.Data.DataTable = New
System.Data.DataTable("Clientes")

'Si el DATASET contiene algún objeto DATATABLE,
vaciamos el DATASET.
If _ds.Tables.Count() <> 0 Then
_ds.Tables.Clear()
End If

'Llenamos la tabla con la salida de la query.
_da.Fill(dt)
'Añadimos la tabla al DATASET.
_ds.Tables.Add(dt)

Return _ds

Catch er As SqlCeException
ShowError(er)
Catch er As Exception
MessageBox.Show(er.Message)
End Try

End Function
|-----------------------------------|

El problema es que desde "form1" donde tengo el DataGrid,
quisiera poder acceder al DataSet
que tiene enlazado y por tanto acceder al DataTable.

Bueno espero que no sea mucho rollo y espero tu consejo. Si
hay otra forma de hacerlo, no
me importa cambiarlo.

Gracias...
>-----Mensaje original-----

>.
>

Ezequiel

unread,
Nov 17, 2004, 1:01:08 PM11/17/04
to
¿No te vale mi respuesta?????????.......

Un saludo.....


"Rubén" <anon...@discussions.microsoft.com> escribió en el mensaje

news:75ec01c4cca2$ce1000a0$a301...@phx.gbl...

Rubén

unread,
Nov 17, 2004, 3:28:01 PM11/17/04
to
He colega, Si lo he tenido en cuenta,
pero el problema es que quiero acceder al DataSet a través
del objeto DataGrid. Llamame cabezón, pero si se puede
enlazar el DataSet al DataGrid directamente:
DataGrid1.DataSource = dataset
se debería poder acceder a el.

He probado varias cosas pero no me funcionan:

- Un Cast, para obtener el objeto DataSet:
myDataSet = CType(DataGrid1.DataSource,System.Data.DataSet)

- ó esto otro:

numFilas=DataGrid1.BindingContext(DataGrid1.DataSource).Count()

numColumnas=DataGrid1.TableStyles.Item(0).GridColumnStyles.Count()


Bueno si tienes alguna idea, será bienvenida.

>-----Mensaje original-----

>.
>

Ezequiel

unread,
Nov 18, 2004, 7:34:15 AM11/18/04
to
Perdona discrepe tu opinión, pero esto:

numFilas=DataGrid1.BindingContext(DataGrid1.DataSource).Count()

En todo caso te daría el NUMERO TOTAL DE FILAS que tiene el DataSet
asociado, y yo entiendo que quieres el número de filas QUE PRESENTA el
datagrid. Por ejemplo, estamos visionando un pedido en concreto y ese pedido
tiene una serie de líneas, imagina que 10 líneas, pues debes mostrar que
tiene 10 líneas y si haces lo que pones, visionarás el NUMERO TOTAL de
líneas que tiene el DataSet, incluyendo TODOS los pedidos que tengas... Yo
trabajo con muchos datos y lo hago de la forma que te pongo mas arriba y la
verdad, me funciona de lujo y súper rápido. No quiero decir con esto que sea
la mejor manera, por supuesto, seguro que hay formas más... digamos,
profesionales... pero de momento funciona y bien... jeje, es todo...

Un saludo....

"Rubén" <anon...@discussions.microsoft.com> escribió en el mensaje

news:18ad01c4cce3$ef32c1a0$a501...@phx.gbl...

eliec...@gmail.com

unread,
Mar 14, 2016, 4:07:02 AM3/14/16
to
oye ezequiel gracias me sirvio eso
0 new messages