使用DataGrid控件显示要素类的表

Posted by 蒋波涛 24 September,2006 Views (0)Comment

要素类既可以以图形形式显示,也可以以文本表的形式显示出现。本例是在VB.NET中使用DataGrid控件实现。

如何显示一个要素类的表结构,只取了一层做试验:

    Public Sub table()

        Dim pFeatLyr As IFeatureLayer

        pFeatLyr = pMainMap.Layer(0)

        Dim pFeatlyrFields As ILayerFields

        pFeatlyrFields = pFeatLyr

        Dim pFeatCls As IFeatureClass

        pFeatCls = pFeatLyr.FeatureClass

        Dim myDataSet As DataSet

        myDataSet = New DataSet("MapData")



        Dim pTable As New DataTable(pFeatLyr.Name)

        Dim pTableCol As DataColumn



        Dim n As Integer

        For n = 0 To pFeatlyrFields.FieldCount - 1

            pTableCol = New DataColumn(pFeatlyrFields.Field(n).Name)

            pTable.Columns.Add(pTableCol)

            pTableCol = Nothing

        Next

        Dim pFeatCursor As IFeatureCursor

        pFeatCursor = pFeatCls.Search(Nothing, False)

        Dim pFeat As IFeature

        pFeat = pFeatCursor.NextFeature

        Do While Not pFeat Is Nothing

            Dim i As Integer

            Dim pTableRow As DataRow

            pTableRow = pTable.NewRow

            For i = 0 To pFeatlyrFields.FieldCount - 1

                If pFeatlyrFields.FindField(pFeatCls.ShapeFieldName) = i Then

                    pTableRow(i) = pFeatCls.ShapeType

                Else

                    pTableRow(i) = pFeat.Value(i)

                End If

            Next

            pTable.Rows.Add(pTableRow)

            pFeat = pFeatCursor.NextFeature

        Loop

        myDataSet.Tables.Add(pTable)

        DataGrid1.DataSource = myDataSet

        DataGrid1.DataMember = pFeatLyr.Name

    End Sub

这样一来,DataGrid1就可以显示数据了。

如何判断点击了哪一行:

    Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown

        Dim myGrid As DataGrid = CType(sender, DataGrid)

        Dim myHitInfo As DataGrid.HitTestInfo = myGrid.HitTest(e.X, e.Y)

        Console.WriteLine(myGrid.Item(myHitInfo.Row, myHitInfo.Column))

    End Sub

有了上面的方法,大家其实还可以在里面加上由文调图的代码,也非常简单。

Related Items

Categories : ArcObjects Tags : ArcObjects  
Comments
Leave a comment

Or, take a look at Archives and Categories

目录

存档