'Fill' no es miembro del error 'System.Web.UI.WebControls.DataGrid'

Estoy desarrollando un programa VB.NET para buscar texto en una columna específica de un Datagrid. Casi he terminado de implementar esto siguiendo el tutorial de MS en: http://support.microsoft.com/kb/815680

Pero ahora solo tengo un error de compilación:

BC30456: 'Fill' no es miembro de 'System.Web.UI.WebControls.DataGrid'.

en la línea que dice:

dgTable.Fill(ds)

El código relacionado con este proyecto es el siguiente. ¿Alguien sabe cómo puedo solucionar esto, por favor?

Mi archivo global.vb:

Namespace GlobalFunctions
    Public Class GlobalF
        Public Shared Function GlobalF_Load(ByVal dgTable As DataGrid)
            dgTable.Fill(ds)
            dv = New DataView(ds.Tables)
            dgTable.DataSource = dv
            dv.Sort = "Part No."
            CM = (System.Windows.Forms.CurrencyManager)
            dgTable.BindingContext([dv])
            Dim sender As New sender()

            dv.ListChanged += New ListChangedEventHandler(dv_ListChangedEvent)
        End Function

        Public Shared Function btnFind_Click(ByVal sender As Object, ByVal e As EventArgs)
            If (txtFind.Text = "") Then
                Response.write("Enter some criteria to find.")
                txtFind.Focus()
            Else
                Dim i As Int
                i = dv.Find(txtFind.Text)
                If (i > dv.Table.Rows.Count Or i < 0) Then
                    Response.Write("Record Not found")
                Else
                    CM.Position = i
                End If
            End If
        End Function

        Private Shared Function dv_ListChangedEvent(ByVal sender As Object, ByVal e As ListChangedEventArgs) Handles btnFind.ListChanged
            If (dv.Sort.Substring((dv.Sort.Length - 4), 4) = "DESC") Then
                lblFind.Text = "Enter Search Criteria " + dv.Sort.Substring(0, dv.Sort.Length - 5)
            Else
                lblFind.Text = "Enter Search Criteria " + dv.Sort
            End If
        End Function

Y mi archivo ASPX:

        Public DSTableData As New System.Data.DataSet
        Public dv As New DataView

        Sub Main()
            '------------------------- Query database and get arrays for the chart and bind query results to datagrid ----------------------------------------                                                              

            If check1.Checked Then
                DSTableData = GlobalFunctions.GlobalF.FillSparePartsTable(1)
            Else
                DSTableData = GlobalFunctions.GlobalF.FillSparePartsTable(0)
            End If

            'dv = DataView(DSTableData(0))
            dgTable.DataSource = DSTableData
            dgTable.DataBind()

            GlobalFunctions.GlobalF.GlobalF_Load(dgTable)

        End Sub

        Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
            If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
                Dim thepriority As Integer

...

Ahora he modificado el código anterior de la siguiente manera:

Public Shared Function GlobalF_Load(ByVal dgTable As DataGrid)
            Dim dv As New DataView
            Dim ds As New DataSet
            dv = New DataView(ds.Tables())
            dgTable.DataSource = dv
            dv.Sort = "Part No."
            CM = (System.Windows.Forms.CurrencyManager)
            dgTable.BindingContext([dv])
            Dim sender As New sender()

Pero ahora recibo un error diferente:

BC30311: El valor de tipo 'System.Data.DataTableCollection' no se puede convertir a 'System.Data.DataTable'

Además, no estoy seguro de si es bueno declarar estas variables nuevas de esta manera, ya que creo que ya las llamo nuevas en otra parte de mi código.

preguntado el 16 de mayo de 11 a las 19:05

1 Respuestas

En lugar de:

dgTable.Fill(ds)
dv = New DataView(ds.Tables)
dgTable.DataSource = dv

tratar:

dv= New DataView(ds.Tables("table name")
dgTable.DataSource = dv

contestado el 17 de mayo de 11 a las 00:05

Estoy de acuerdo, pero desafortunadamente mi versión de framework o VS no es compatible con DataGridView. Sin embargo, sé que es posible implementarlo con un DataGrid. ¿Algún consejo por favor? - la salvación está aquí

Eche un vistazo a mi respuesta nuevamente, acabo de tomar un ejemplo del tutorial que estaba usando. - Jack

Gracias, Jack, pero ¿puedes ver mi edición? Probé su solución, pero ahora me está dando un error diferente. - la salvación está aquí

No puedes poner ds.Tables() en un DataView tiene que ser una mesa singular. Entonces, en cambio, necesitarías algo como ds.Tables("table name") or ds.Tables(index). index siendo el índice de la tabla en tu DataSet. Si solo tuviera una mesa, sería ds.Tables(0). - Jack

Jack, ahora aparece el error: BC30002: El tipo 'CurrencyManager' no está definido. ¿Sabes lo que esto significa? - la salvación está aquí

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.