[英]how to create a datagridview dynamically in c# wpf
如何在 C# 中動態創建 DataGridView? 你能舉個例子嗎?
我有后綴列表和前綴列表后綴是:BA1,BA2,BA3,BA4,BA5,BA6,前綴是:Parameter1,parameter2,parameter3,parameter4。
我還有列出參數
public class Parameter
{
public string Prefix{get;set;}
public string Suffix{get;set;}
public string Value {get;set;}
}
public class Mother
{
public string List<Parameter> parameters{get;set;} = new List<Parameter>();
}
參數列表包含:
"Parameter1" "BA1" "55"
"Parameter1" "BA2" "58"
"Parameter1" "BA3" "1"
"Parameter1" "BA4" "77"
"Parameter1" "BA5" "7889"
"Parameter1" "BA6" "100"
"Parameter2" "BA1" "7"
"Parameter2" "BA2" "44"
..
..
..
..
我想顯示一個 DataGrid
Name BA1 BA2 BA3 BA4 BA5 BA6
Parameter1 55 58 1 77 7889 100
Parameter2 7 44
Parameter3
Parameter4
我的 XAML 是:
DataTemplate DataType="{x:Type local:Mother}"><DataGrid Name="Grid" AutoGenerateColumns ="True" ItemsSource="{Binding Parameters}"></DataGrid>
</DataTemplate>
你可以像這樣構建一個DataTable
public MainWindow()
{
InitializeComponent();
var mother = new Mother();
mother.Parameters.Add(new Parameter("Parameter1", "BA1", "55"));
mother.Parameters.Add(new Parameter("Parameter1", "BA2", "58"));
mother.Parameters.Add(new Parameter("Parameter1", "BA3", "1"));
mother.Parameters.Add(new Parameter("Parameter1", "BA4", "77"));
mother.Parameters.Add(new Parameter("Parameter1", "BA5", "7889"));
mother.Parameters.Add(new Parameter("Parameter1", "BA6", "100"));
mother.Parameters.Add(new Parameter("Parameter2", "BA1", "7"));
mother.Parameters.Add(new Parameter("Parameter2", "BA2", "44"));
DataGrid.ItemsSource = ConvertToDataTable(mother).DefaultView;
}
private static DataTable ConvertToDataTable(Mother mother)
{
var dataTable = new DataTable();
dataTable.Columns.Add("Name");
foreach (var column in mother.Parameters
.OrderBy(x => x.Suffix)
.GroupBy(x => x.Suffix))
{
dataTable.Columns.Add(column.First().Suffix);
}
foreach (var rowGroup in mother.Parameters
.OrderBy(x => x.Prefix)
.GroupBy(x => x.Prefix))
{
var dataRow = dataTable.NewRow();
dataRow["Name"] = rowGroup.First().Prefix;
foreach (var item in rowGroup)
{
dataRow[item.Suffix] = item.Value;
}
dataTable.Rows.Add(dataRow);
}
return dataTable;
}
}
public class Parameter
{
public Parameter(string prefix, string suffix, string value)
{
Prefix = prefix;
Suffix = suffix;
Value = value;
}
public string Prefix { get; set; }
public string Suffix { get; set; }
public string Value { get; set; }
}
public class Mother
{
public Mother()
{
Parameters = new List<Parameter>();
}
public List<Parameter> Parameters { get; set; }
}
xaml:
<DataGrid x:Name="DataGrid" AutoGenerateColumns="True" CanUserAddRows="False" CanUserDeleteRows="False" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.