2016-07-23 14 views
0

ich importiere eine Excel auf den Gridcontrol in DevExpress Datei Ich habe ein keine Probleme die Excel-Datei in dem Grid-Control importieren, aber wenn ich Spalten hinzufügen zu meinem Gridcontrol dann versuchen, mein Excel-Datei überschreibt diese Spalten zu importieren,Probleme mit DevExpress Gridcontrol und Importieren von Excel-Datei

ich versuchte auch verwendet, um das CustomColumnUnBoundData Ereignis von Gridview und es scheint zu funktionieren und es wird die Spalten nicht überschreiben, wenn ungebundene Spalten hinzugefügt Aber wenn die Button wird angeklickt es entstehen zwei c Spalten aus irgendeinem Grund benannt [NAME] und Abfragen der Zeilenwerte zweimal.

Beispiel 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 

i gegründet, um die Verbindung in einer anderen Klasse:

VB KLASSE:

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 

ich für den langen Post Apologize ich gerade don Ich habe keine Ahnung, was dieses Ereignis auslöst, also musste ich es gründlich erklären. Danke

+0

Sind die Namen Ihrer Spalten und Spalten aus Excel gleich? –

Antwort

0

Wenn Ihr Gitter keine Spalte hat, wenn Sie seine Datenmenge einstellen, erzeugt das Gitter automatisch die GridColumns. Sie können GridView.OptionsBehavior.AutoPopulateColumns auf false festlegen, um dieses Verhalten zu vermeiden.