【发布时间】:2018-07-16 04:59:33
【问题描述】:
我有一个 WinForms 应用程序,里面只有一个 DevExpress GridControl。 此 GridControl 在主从模式下使用两个 GridView 和一个关系。
作为 gridControl 的数据源,我正在使用以下类:
public class DashboardParameter
{
public string Name { get; set; }
public int DataType { get; set; }
public int ValueType { get; set; }
public BindingList<DashboardParameterValue> Detail { get; set; }
public DashboardParameter()
{
Detail = new BindingList<DashboardParameterValue>();
}
}
public class DashboardParameterValue
{
public string Value { get; set; }
}
这是数据加载的代码:
private void MasterDetail_Load(object sender, EventArgs e)
{
data = new BindingList<DashboardParameter>();
var p1 = new DashboardParameter() { Name = "First", DataType = 1, ValueType = 1};
p1.Detail.Add(new DashboardParameterValue() { Value = "Value1" });
p1.Detail.Add(new DashboardParameterValue() { Value = "Value2" });
var p2 = new DashboardParameter() { Name = "Second", DataType = 1, ValueType = 1 };
p2.Detail.Add(new DashboardParameterValue() { Value = "Value3" });
p2.Detail.Add(new DashboardParameterValue() { Value = "Value4" });
data.Add(p1);
data.Add(p2);
gridControl.DataSource = data;
}
据我了解,通过这种方式,我的 gridControl 会自动找到主从关系并为 DataSource 类中的每个字段创建列(如果 AutoPopulateColumns 属性为 true)。
问题:我无法更改 detailView 列中的任何内容。我不知道何时创建我的 dataView 列。所有 detailView 属性都将被忽略。
例如,如果我更改 detailView.AutoPopulateColumn = false,则仍在创建列。
如果我创建自定义 GridColumn gridColumn1 并在那里添加 detailView.Columns.Add(gridColumn1),它将被忽略。
我能做的只有一件事是使用 [DisplayAttribute] 来更改 DisplayName、Visible 等。
问题:我必须如何更改我的代码才能更改我的 detailView。
例如,我可以在所有自动生成的列之后在 detailView 中添加 Column,或者将 Column 类型更改为 ComboBox(使用 RepositoryItemComboBox)。
【问题讨论】:
标签: c# winforms devexpress master-detail