2011-12-17 16 views
0

私の問題に関連するいくつかの回答がありました。私はその答えを試しても、私はこれを解決することはできません。WPFのDataGridにDataTableを追加

private void btn_View_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
    DataTable objDataTable = this.FillDepartment(); 
    this.dataGrid1.ItemsSource = objDataTable.DefaultView; 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show(ex.Message); 
    } 
} 

private DataTable FillDepartment() 
{ 
    try 
    { 
    Departments objDepartments = new DepartmentServices().GetAllDept(); 
    DataTable objDataTable = new DataTable(); 

    objDataTable.Columns.Add("Department No"); 
    objDataTable.Columns.Add("Department Name"); 
    objDataTable.Columns.Add("Location"); 

    foreach (Department department in objDepartments) 
    { 
     DataRow objDataRow = objDataTable.NewRow(); 

     objDataRow[0] = department.DepNo; 
     objDataRow[1] = department.Name; 
     objDataRow[2] = department.Loc; 

     objDataTable.Rows.Add(objDataRow); 
    } 

    return objDataTable; 
    } 
    catch (Exception) 
    { 

    throw; 
    } 
} 

ブレークポイントを使用してコードを実行すると、objDataTableオブジェクトは値iを持つオブジェクトをデータベースに返します。しかし、私はこの行をDataGridに追加することはできません。あなたは私がこの問題を克服するのを手伝ってくれることを願っています。

答えて

0

私はあなたの問題に対して次の解決策を提案します。

DataTableはIEnumerableを実装せず、バインドするため、DefaultViewを使用します。

public static readonly DependencyProperty ObjDataTableDefaultViewProperty = 
    DependencyProperty.Register("ObjDataTableDefaultView", typeof(System.Data.DataView), typeof(Window2), new FrameworkPropertyMetadata()); 

public System.Data.DataView ObjDataTableDefaultView { 
    get { return (System.Data.DataView)GetValue(ObjDataTableDefaultViewProperty); } 
    set { SetValue(ObjDataTableDefaultViewProperty, value); } 
} 

private void CreateObjDataTable() 
{ 
    try 
    { 
    ObjDataTableDefaultView = this.FillDepartment().DefaultView; 
    } 
    catch (Exception ex) 
    { 
    MessageBox.Show(ex.Message); 
    } 
} 

XAMLコード

<Window x:Class="Spielwiese.Window2" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Spielwiese" Height="300" Width="300" 
     x:Name="uc"> 
<Grid> 
    <DataGrid x:Name="dataGrid1" 
      AutoGenerateColumns="True" 
      ItemsSource="{Binding ObjDataTableDefaultView, ElementName=uc, Mode=OneWay}"/> 
</Grid> 
</Window> 

希望これは

+0

を支援[OK]をありがとう。私はこれを試してみる。 – Shashika

関連する問題