Добавить DataTable в DataGrid в WPF - PullRequest
0 голосов
/ 17 декабря 2011

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

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. Надеюсь, вы, ребята, можете помочь мне преодолеть эту проблему.

1 Ответ

0 голосов
/ 17 декабря 2011

Я бы предложил следующее решение вашей проблемы.

Используйте 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>

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...