遇到问题与DevExpress GridControl和导入Excel文件



我正在将excel文件导入DevExpress中的GridControl。我将excel文件导出到网格控件没有问题,但当我将列添加到我的网格控件,然后尝试导入我的excel文件时,它会覆盖这些列,

我还尝试使用GridView中的CustomColumnUnBoundData事件,它似乎有效,并且在添加未绑定列时不会覆盖列。但当单击按钮时,它会出于某种原因创建两列,命名为[NAME]并查询行值两次。

样本VB:

Private Sub SimpleButton2_Click(sender As System.Object, e As System.EventArgs) Handles SimpleButton2.Click, GridView1.DataSourceChanged
        OFD.ImportMe(GridControl1, TextEdit1)
        view = GridControl1.MainView
        'Dim Columns As GridColumn
        GridColumn1 = GridView1.Columns.AddField("NAME")
        GridColumn1.VisibleIndex = view.Columns.Count
    End Sub
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    End Sub
    Private Sub GridView1_CustomUnboundColumnData(sender As Object, e As DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs) Handles GridView1.CustomUnboundColumnData
        Dim Fields() As String = {"NAME", "DESCRIPTION", "STOCK", "ORDERED"}
        GridColumn1.VisibleIndex = GridView1.Columns.Count - 1
        For i As Integer = 0 To GridView1.Columns.Count
            If e.Column.FieldName = Fields(0) AndAlso e.IsGetData Then
                e.Value = e.ListSourceRowIndex
            End If
            ' OFD.Listing(e.ListSourceRowIndex)
        Next
    End Sub

我在不同的类别中建立了连接:

VB类:

Public Function openMe(ByVal path As TextEdit)
        Dim ofd As New OpenFileDialog
        ofd.Filter = "Excel Files (*.xls)|*.xls|All Files (*.)|*.*"
        If ofd.ShowDialog() = DialogResult.OK Then
            path.Text = ofd.FileName
        End If
        Return 0
    End Function
    Public Function ImportMe(ByVal gc As GridControl, ByVal file As TextEdit)
        Dim Connect As OleDbConnection
        Dim Command As OleDbDataAdapter
        Dim con As String
        con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file.Text + ";Extended Properties=Excel 8.0"
        Connect = New OleDbConnection(con)
        Command = New OleDbDataAdapter("Select * from [Sheet1$]", Connect)
        DD = New DataSet()
        Command.Fill(DD)
        gc.DataSource = DD.Tables(0)
        Connect.Close()
        Return DD
    End Function
    Public Function Listing(ByVal sender As Object, ByVal listSource As Integer)
        Dim DR As DataRow = DD.Tables("NAME").Rows(listSource)
        Return DR
    End Function

我为这篇长帖子道歉,我只是不知道是什么引发了这一事件,所以我必须彻底解释它。感谢

如果在设置网格的数据源时没有列,则网格将自动生成GridColumns。您可以将GridView.OptionsBehavior.AutoPopulateColumes设置为false以避免这种行为。

最新更新