【发布时间】:2018-11-13 01:50:54
【问题描述】:
我有一个使用以下方法从传入数据动态构建的 Datagrid:
TableData = JObject.Parse(File.ReadAllText(@"Datainfo.json"));
var listCols = new List<DataColumn>();
var rawData = new DataTable();
foreach (dynamic item in TableData.data)
{
string columnName = item.Column;
var column = new DataColumn(columnName);
string DataType = item.DataType;
if (DataType == "Int" )
{
column.DataType = Type.GetType("System.Int32");
}
else
{
column.DataType = Type.GetType("System.String");
}
column.Unique = false;
column.AllowDBNull = true;
column.AutoIncrement = false;
listCols.Add(column);
rawData.Columns.Add(column);
}
然后我像这样将它推送到 DataGrid:
DataTable ETL = null;
ETL = rawData;
ETL.DefaultView.AllowEdit = true;
DataGridView.DataContext = ETL;
我想为每一列添加一个 StackPanel,其中包含一个用于列名称的 TextBox,以及一个包含各种数据类型的下拉列表。然后它会有一个应用/取消选项。
我一直在尝试遵循类似的解决方案来将扩展器添加到网格,但我不知道如何将它应用到 DataGrid,因为它没有 .Children() 到 .Add() 到。
https://www.codeproject.com/Questions/877973/How-Do-I-Add-A-Stackpanel-To-An-Expander-Header-Vi
有没有办法做我所要求的?我还尝试隐藏标题行并控制前两行,但是当我尝试将标题加载到 Int 列时,出现错误,因此显然这不是一个好主意。
【问题讨论】:
-
用
CellTemplate定义DataGridTemplateColumn。
标签: c# wpf datagridview datagrid datagridviewcolumn