【发布时间】:2020-10-03 07:24:58
【问题描述】:
早安
在将所有 XamComboBoxEditors 的字段绑定到 XamDataGrid 时,我遇到了一个非常大的问题
在我的数据库中,我有 2 个表:
帐户
public int AccountId { get; set; }
public string Code { get; set; }
public string Code2 { get; set; }
public string Name { get; set; }
public int Parent { get; set; }
和 Acc_Link
public int Acc_LinkId { get; set; }
public string Acc_LinkTitle { get; set; }
我需要在我的 XamDataGrid 3 组合框列中显示:
包含 Acc_Link 表中所有 Acc_LinkTitles 的帐户标题组合框
包含帐户表中所有代码的代码组合框
包含帐户表中所有名称的名称组合框
为了方便我的工作,我创建了一个名为 Acc_LinkObsrvable 的类,其中包含上述字段
但无论我如何尝试,运行代码时 XamDataGrid 中都没有显示任何内容。我尝试在主要的 FieldInitialized 事件中添加代码,以便在代码运行时加载,但又没有出现
我将发布我的代码,请帮助我。
Acc_LinkObsrvable 类:
public string Acc_LinkTitle { get; set; }
public string Code { get; set; }
public string Name { get; set; }
XAML:
<igDP:XamDataGrid DataSource= "{Binding Path=Acc_LinkObservable}" Name="Account_Info_XamDataGrid" FieldLayoutInitialized ="Account_Info_XamDataGrid_FieldLayoutInitialized" BindToSampleData="False" FieldLayoutInitialized = "Account_Info_XamDataGrid_FieldLayoutInitialized">
<igWPF:XamDataGrid.FieldLayoutSettings>
<igWPF:FieldLayoutSettings AutoGenerateFields="False" />
</igWPF:XamDataGrid.FieldLayoutSettings>
</igDP:XamDataGrid>
在主窗口中:
private void Account_Info_XamDataGrid_FieldLayoutInitialized(object sender, FieldLayoutInitializedEventArgs e)
{
ComboBoxItemsProvider title_provider = new ComboBoxItemsProvider();
ComboBoxItemsProvider code_provider = new ComboBoxItemsProvider();
ComboBoxItemsProvider name_provider = new ComboBoxItemsProvider();
List<Acc_LinkDTO> Acc_lists = new List<Acc_LinkDTO>();
List<AccountDTO> accounts = new List<AccountDTO>();
FieldLayout fieldLayout = new FieldLayout();
Acc_lists = _Acc_LinkUIAdapter.getAllAcc_Links();
accounts = _AccountUIAdapter.getALlGroup();
//Returns a list of all Account titles
foreach (var x in Acc_lists)
{
int i = 0;
title_provider.Items.Add(new ComboBoxDataItem(i, x.Acc_LinkTitle));
i++;
}
//Returns a list of all codes and names
foreach (var x in accounts)
{
int i = 0;
code_provider.Items.Add(new ComboBoxDataItem(i, x.Code));
name_provider.Items.Add(new ComboBoxDataItem(i, x.Name));
i++;
}
//First column
Style style1 = new Style(typeof(XamComboEditor));
style1.Setters.Add(new Setter(XamComboEditor.ItemsProviderProperty, title_provider));
var fld1 = new Field()
{
Name="Acc_LinkTitle",
Label = "Account Title",
AlternateBinding = new Binding("Acc_LinkDTO.Acc_LinkTitle"),
EditorStyle = style1,
EditorType = typeof(XamComboEditor)
};
e.FieldLayout.Fields.Add(fld1);
//Second column
Style style2 = new Style(typeof(XamComboEditor));
style2.Setters.Add(new Setter(XamComboEditor.ItemsProviderProperty, code_provider));
var fld2 = new Field()
{
Name="Code",
Label = "Code",
AlternateBinding = new Binding("AccountDTO.Code"),
EditorStyle = style2,
EditorType = typeof(XamComboEditor)
};
e.FieldLayout.Fields.Add(fld2);
//Third column
Style style3 = new Style(typeof(XamComboEditor));
style1.Setters.Add(new Setter(XamComboEditor.ItemsProviderProperty, name_provider));
var fld3 = new Field()
{
Name="Name",
Label = "Name",
AlternateBinding = new Binding("AccountDTO.Name"),
EditorStyle = style3,
EditorType = typeof(XamComboEditor)
};
e.FieldLayout.Fields.Add(fld3);
}
【问题讨论】:
-
Acc_LinkObsrvable类是如何定义的? -
公共类 Acc_LinkObservable { 公共字符串 Acc_LinkTitle { 获取;放; } 公共字符串代码 { 获取;放; } 公共字符串名称 { 获取;放; } }
标签: c# visual-studio binding infragistics xamdatagrid