Solved! Go to Solution.
I am using ArcGIS 9.3.1.
I want to bind the Itable to a .net DataGridView on framework 3.5.
How do i do it?
Please help
thanks
Public Function ConvertToADONETDataTableFromLayer(ByVal inLayer As IFeatureLayer) As DataTable Try Dim tmpDT As New DataTable("tmpDT") Dim column As DataColumn Dim pTable As ITable = inLayer.FeatureClass Dim pFields As IFields = pTable.Fields Dim pCur As ICursor = pTable.Search(Nothing, False) For c = 0 To pCur.Fields.FieldCount - 1 column = New DataColumn() column.ColumnName = (pFields.Field(c).Name) If pFields.Field(c).Type = esriFieldType.esriFieldTypeString Then column.DataType = System.Type.GetType("System.String") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeInteger Then column.DataType = System.Type.GetType("System.Int32") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeDouble Then column.DataType = System.Type.GetType("System.Double") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeDate Then column.DataType = System.Type.GetType("System.DateTime") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeSingle Then column.DataType = System.Type.GetType("System.Single") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeBlob Then column.DataType = System.Type.GetType("System.Byte") End If column.ReadOnly = False tmpDT.Columns.Add(column) Next Dim pRow As IRow = pCur.NextRow Dim newRow As DataRow Do Until pRow Is Nothing newRow = tmpDT.NewRow() newRow.BeginEdit() For cols = 0 To pCur.Fields.FieldCount - 1 newRow(cols) = pRow.Value(pRow.Fields.FindField(pFields.Field(cols).Name)) Next newRow.EndEdit() tmpDT.Rows.Add(newRow) tmpDT.AcceptChanges() pRow = pCur.NextRow Loop Return tmpDT Catch ex As Exception MsgBox(ex.ToString) Return Nothing End Try
I am using ArcGIS 9.3.1.
I want to bind the Itable to a .net DataGridView on framework 3.5.
How do i do it?
Please help
thanks
Public Function ConvertToADONETDataTableFromLayer(ByVal inLayer As IFeatureLayer) As DataTable Try Dim tmpDT As New DataTable("tmpDT") Dim column As DataColumn Dim pTable As ITable = inLayer.FeatureClass Dim pFields As IFields = pTable.Fields Dim pCur As ICursor = pTable.Search(Nothing, False) For c = 0 To pCur.Fields.FieldCount - 1 column = New DataColumn() column.ColumnName = (pFields.Field(c).Name) If pFields.Field(c).Type = esriFieldType.esriFieldTypeString Then column.DataType = System.Type.GetType("System.String") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeInteger Then column.DataType = System.Type.GetType("System.Int32") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeDouble Then column.DataType = System.Type.GetType("System.Double") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeDate Then column.DataType = System.Type.GetType("System.DateTime") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeSingle Then column.DataType = System.Type.GetType("System.Single") ElseIf pFields.Field(c).Type = esriFieldType.esriFieldTypeBlob Then column.DataType = System.Type.GetType("System.Byte") End If column.ReadOnly = False tmpDT.Columns.Add(column) Next Dim pRow As IRow = pCur.NextRow Dim newRow As DataRow Do Until pRow Is Nothing newRow = tmpDT.NewRow() newRow.BeginEdit() For cols = 0 To pCur.Fields.FieldCount - 1 newRow(cols) = pRow.Value(pRow.Fields.FindField(pFields.Field(cols).Name)) Next newRow.EndEdit() tmpDT.Rows.Add(newRow) tmpDT.AcceptChanges() pRow = pCur.NextRow Loop Return tmpDT Catch ex As Exception MsgBox(ex.ToString) Return Nothing End Try
Thank you James. It worked perfectly.
I recommend that, this solution strongly works.
cheers