2011-01-07 3 views
0

Я здесь новый, поэтому простите меня, если это неправильный раздел для моего вопроса. Моя проблема в том, что я не могу заполнить datgrid содержимым набора данных. Пробыв последние несколько дней, чтобы попытаться разрешить это, я отказался и подумал, что я попробую здесь. Я использую VB 2010 VB.Net, и это приложение WPF Как вы можете сказать из кода, я очень к этому знаком, и любые предложения по улучшению будут наиболее желанными. Я вижу, что набор данных заполнен ок с помощью визуализатора, у меня есть datagrid 'dgBOM', который я хочу отобразить результаты. Популярным решением в моих поисках было добавить '.DataSource', но когда я набираю '.' после dgBOM параметр Datasource отсутствует.Как заполнить WPat Datagrid из Datatable?

Любая помощь будет высоко оценена.

спасибо.

Код:

Public Sub Connect() 
    Dim cn As OleDbConnection 
    Dim cmd As OleDbCommand 
    Dim dr As OleDbDataReader 
    Dim ds As DataSet 
    Dim da As OleDbDataAdapter 
    Dim dt As DataTable 
    Dim drow As DataRow 
    Dim PartColumn As DataColumn 
    Dim CostColumn As DataColumn 
    dt = New DataTable("BOM") 
    ds = New DataSet("BOM") 
    PartColumn = New DataColumn("PartNo") 
    CostColumn = New DataColumn("Cost") 
    da = Nothing 
    cn = Nothing 
    dr = Nothing 
    Try 
     cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\Ls-wtgl834\share\Adrian\PriceLists\WAP-PriceLists.mdb;User ID=Admin") 
     cn.Open() 
     cmd = New OleDbCommand("select * from Inventory", cn) 
     dr = cmd.ExecuteReader 
     da = New OleDbDataAdapter(cmd) 
     dt.Columns.Add(PartColumn) 
     dt.Columns.Add(CostColumn) 
     While dr.Read() 
      If dr(0) = FBladeExtNo Then 
       FrontBladeCost = dr(1) 
       drow = dt.NewRow() 
       drow("PartNo") = FBladeExtNo 
       drow("Cost") = FrontBladeCost 
       dt.Rows.Add(drow) 
       ds.Tables.Add(dt) 
       Exit While 
      End If 
     End While 
     dgBOM.ItemsSource = ds 
    Catch 
    End Try 
    dr.Close() 
    cn.Close() 
End Sub 

ответ

0

Я дал на DataReader и тому подобное. После написания программы пару лет назад, где я должен был предоставить всю логику отслеживания изменений и отслеживания параллелизма и отношений, и все, что я поднял, потому что это так интенсивно.

В настоящее время я использую каркас O/RM; это сопоставление объектов/отношений. В настоящее время две из них - это Entity Framework (моя личная поддержка) и NHibernate (первоначально написанная для Java, но перенесенная на .NET). Эти структуры позволяют сопоставлять таблицы базы данных с .NET-классами. Либо вы пишете себя, либо сгенерированы инструментом (в случае с Entity Frameworks).

EF в Visual Studio 2010 позволяет создавать модели First-First и Database-First. Модель-First позволяет создать диаграмму того, как вы хотите, чтобы ваши классы связывались друг с другом (например, класс Customer, в котором есть коллекция адресов, телефонных номеров и событий), затем генерирует базу данных для хранения этих данных. Database-First - это наоборот. Вы создаете свою базу данных, а EF пытается чтобы создать модель, которая отражает структуру базы данных. Она заботится о создании строки соединения, отслеживании изменений сущностей и параллелизма и представляет данные в хороших объектах, которые, на мой взгляд, генерируются довольно быстро. Лично я обнаружил, что поиск данных EF быстрее чем моя собственная рука, выполняющая поиск данных и популяцию объектов.

WPF, с его возможностями привязки данных, больше ориентирован на эти объекты данных (здесь после того, как я просто назову их сущностями), чем с DataReaders и DataAdapters. Если вы хотите погрузиться прямо, вот немного Microsoft video, начав с EF. Также не забудьте проверить WindowsClient.net, так как у них есть хорошие вещи.

Позже, как только вы получите ведение EntityFramework, ознакомьтесь с шаблоном проектирования MVVM.

Смежные вопросы