0

テーブルのリストを含むツリー ビューを表示する必要があり、ユーザーが任意のテーブルを選択すると、列と行のリストを含むグリッドが表示され、行には DataGridCheckboxColumns があり、ユーザーはチェックボックスの列を編集できます。

現在、これを実行する際に技術的な課題に直面しています。

列を作成することはできますが、行が表示されず、ツリー ビューの選択を変更すると、Datatable が更新されますが、グリッドに割り当てると 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 に答える