【问题标题】:Add DataTable to DataGrid in WPF在 WPF 中将 DataTable 添加到 DataGrid
【发布时间】:2011-12-17 06:25:03
【问题描述】:

我看到了一些与我的问题相关的答案。我试过那个答案,但我仍然无法解决这个问题。

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 对象的代码返回了我插入数据库的值的对象。但我无法将此行添加到 DataGrid。希望你们能帮我解决这个问题。

【问题讨论】:

    标签: wpf datagrid datatable


    【解决方案1】:

    我会为您的问题建议以下解决方案。

    使用 DefaultView,因为 DataTable 没有实现 IEnumerable 并绑定到它。

    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>
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2013-03-24
      • 2018-02-07
      • 2023-04-06
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多