Turning a Datagrid DataItem into an array.

I have used this method to create an array of items from a datagrid row:

        Dim dg As DataGrid = CType(Page.FindControl("dgCharges"), DataGrid)
        Dim rowView As DataRowView = CType(dg.SelectedItem.DataItem, DataRowView)
        If Not rowView Is Nothing Then
            Dim itemArray As Array = rowView.Row.ItemArray

When running the code, the datagrid and it's selectedItem are found
but the DataItem is Nothing.  Why is this?  

If this won't work, how can I create an array of the cells from the DataGridItem?

Thanks.
JeffDrummondAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
boulder_bumConnect With a Mentor Commented:
And if you want to use only the DataGrid cells, you can simply have a method to get the values from the controls (or access the values directly without a method):

Private Sub GetValues() As ArrayList
     Dim al As ArrayList = New ArrayList()
   
     al.Add( CType( dg.SelectedItem.Cells(0).Controls(1), TextBox ).Text )
     al.Add...
     etc...
End Sub
0
 
boulder_bumCommented:
I believe the way to do this is to get the DataKeys from the grid item, then search your DataSource for the proper row (assuming you've set up the primary key stuff properly):

Dim keyID As Integer = CType( MyDataGrid.DataKeys(dg.SelectedItem.ItemIndex), Integer )
myDataTable.Rows.Find( 'use key to find row

As to why dg.SelectedItem.DataItem is null, I vaguely remember something about it only being available during binding, but I have about 10% certainty on that memory, so don't take my word for it.
0
 
JeffDrummondAuthor Commented:
The ArrayList works well for my purposes.  Thanks!
0
 
JeffDrummondAuthor Commented:
And you may be right too about the DataItem only being available during databinding.
That's the only other time I've used it.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.