0

我有一个要求,我必须显示一个带有表格列表的树视图,如果用户选择任何表格,那么它应该显示一个带有列列表的网格,并且行应该有一个 DataGridCheckboxColumns,并且用户可以编辑复选框列。

目前,我在执行此操作时面临技术挑战。

我能够创建列,但没有显示行,并且在更改树视图选择时更多,尽管我更新了数据表,但如果我分配给网格,它不会反映在 UI 中。请帮助我,这确实是一个紧急要求。

提前致谢。请在下面找到代码片段。

在此处输入图像描述

//DataGrid Add Columns and Rows
private void DataGridInitialize(string tableName)
{
    DataSet ds = selectionViewBAL.GetColumnNames(tableName);
    DataSet dataset = new DataSet();
    DataTable dt = new DataTable();
    dt.Columns.Add("Functions");
    dt.Columns.Add("AllColumns");

    foreach (var row in ds.Tables[0].Rows)
    {
        string rowname = ((System.Data.DataRow)(row)).ItemArray[0].ToString();
        dt.Columns.Add(rowname);
    }

    int i = 0;
    foreach (DataColumn col in dt.Columns)
    {
        if (i == 0)
        {
            dataGrid1.Columns.Add(
              new DataGridTextColumn
              {
                  Header = "Functions",
                  Binding = new Binding(string.Format("[{0}]", "Functions"))
              });
        }
        else
        {
            dataGrid1.Columns.Add(
              new DataGridCheckBoxColumn
              {
                  Header = col.ColumnName,
                  Binding = new Binding(string.Format("[{0}]", col.ColumnName))
              });
        }
        i++;
    }

    DataSet fetchFunctionNames = new DataSet();
    fetchFunctionNames = selectionViewBAL.GetListOfFunctions(); //FetchFunctions();

    DataRow dr = dt.NewRow();

    var itemsArray = new object[dataGrid1.Columns.Count];
    for (int j = 0; j < fetchFunctionNames.Tables[0].Rows.Count; j++)
    {
        itemsArray[0] = fetchFunctionNames.Tables[0].Rows[j].ItemArray[1];
        for (i = 1; i < itemsArray.Length; i++)
        {
            itemsArray[i] = true;
        }

        dr.ItemArray = itemsArray;

        dt.Rows.Add(dr);
        dr = dt.NewRow();
    }

    dataGrid1.DataContext = dt;
}

我可以看到 dt 中的所有内容,但我无法将其分配给 datagrid,但我无法编辑。

<DataGrid Grid.Row="0" Grid.ColumnSpan="4" Grid.Column="1"
          HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
          HorizontalAlignment="Left" VerticalAlignment="Top" Margin="7,9,0,0"
          Name="dataGrid1" ItemsSource="{Binding}">
4

1 回答 1

0

绑定到DataTable.DefaultView 属性

dataGrid1.ItemsSource = dt.DefaultView;

请参阅此WPF 片段教程 - 也将 DataTable 绑定到 DataGrid

于 2013-02-24T21:45:24.663 回答