2010-08-03 16 views
0

est ici une partie de XAML de l'application, je travaille sur:WPF Bind un ListView à la source de données Oracle

<ListView Name="lsvCustomerDetails" ItemsSource="{Binding myDataTable}"> 
    <ListView.View> 
     <GridView> 
     <GridViewColumn Header="Script Name" DisplayMemberBinding="{Binding ID}"/> 
     <GridViewColumn Header="Status" DisplayMemberBinding="{Binding status}"/> 
     <GridViewColumn Header="Date" DisplayMemberBinding="{Binding date}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

Et le correspondant VB.NET:

Class Window1 
    Public myDataTable As DataTable 

    Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) 
     Dim objOracleConnection As New OracleConnection("Data Source=DB;User Id=user;Password=password;") 
     Dim objOracleCommand As New OracleCommand 
     Dim objOracleReader As OracleDataReader 

     objOracleConnection.Open() 

     objOracleCommand.Connection = objOracleConnection 
     objOracleCommand.CommandText = "SELECT * FROM customers" 
     objOracleReader = objOracleCommand.ExecuteReader() 

     Using objOracleConnection 
     Dim objOracleAdapter As OracleDataAdapter = New OracleDataAdapter(objOracleCommand.CommandText, objOracleConnection) 
     objOracleAdapter.Fill(myDataTable) 
     End Using 
     lsvCustomerDetails.DataContext = myDataTable 
     objOracleConnection.Close() 
    End If 
End Using 

Est-ce bon code pour remplir cette table? Si non, pourquoi? Honnêtement, j'ai trouvé plusieurs points de vue sur la façon de faire ce genre de chose, dont certains sont liés ci-dessous:

From switchonthecode
From csharpcorner
From Allen Mack's blog

Répondre

1

Avez-vous pensé à utiliser LINQ? C'est beaucoup plus facile ...

Ajoutez un modèle d'entité de données à votre projet. Lisez this puis utilisez LINQ pour effectuer votre liaison.

Quelque chose comme:

Dim Context as New myOracleEntityModel 

myTable = Context.myCustomers.ToList 

myItemSource = From i In myTable 
       Select i.ID, i.status, i.date 

lsvCustomerDetails.ItemSource = myItemSource 

Le seul truc va être charger le modèle d'entité de données pour Oracle.

+0

C'est certainement plus propre et beaucoup plus agréable que ce que j'avais. Je vais regarder dedans. – Riddari