WPF数据网格绑定到数据表

时间:2018-08-23 09:46:32

标签: c# wpf

设置场景;我有2个数据表,资产和模型,以及绑定到资产数据表的数据网格;这些表是通过数据库请求填充的。创建新资产时,用户将从模型的下拉列表中选择模型,模型组合框绑定到模型数据表,并从模型表中显示显示名称,而不是模型ID。模型下拉列表的文本字段将更新新资产数据表,并显示为ID,这是资产表如何链接到模型表的方式,也是导出时的要求。

当前所有这些都按预期工作,但是出于用户友好性的考虑,我想在资产的数据网格视图中显示显示名称,而不是ID,但是我不想更改ID在资产表中存在的事实,这就是事实。在导出时是必需的。

在组合框中,我可以使用displaymemberpath来显示不同的值,但是我找不到与datagrid等效的方法或执行我所追求的目标的方式,

数据网格的WPF代码(绑定到AssetCollection):

<DataGrid Name="newAssetRecords" AutoGenerateColumns="False" IsReadOnly="True">
     <DataGrid.Columns>
     <DataGridTextColumn Width="Auto" Header="AssetTag" Binding="{Binding AssetTag,UpdateSourceTrigger=Explicit}"/>
 <DataGridTextColumn Width="Auto" Header="Model" Binding="{Binding Model,UpdateSourceTrigger=Explicit}"/>
 </DataGrid.Columns>
 </DataGrid>

组合框的WPF代码(绑定到模型集合):

<ComboBox Name="combobox_newModel" SelectedValue="{Binding Model, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="[DisplayName]" SelectedValuePath="[SysID]" IsEditable="True"/>

资产类别的C#代码

public class AssetsCollection
 {
    public string SysID { get; set; }
    public string SysUpdatedOn { get; set; }
    public string AssetTag { get; set; }
    public string Model { get; set; }
 }

模型类的C#代码

public class ModelCollection
 {
    public string SysID { get; set; }
    public string SysUpdatedOn { get; set; }
    public string DisplayName { get; set; }
 }

资产的模型是一个sysid,将存在于模型集合中。

现在,显然我还没有发布所有有关类或数据检索的初始化代码,但希望能对您有所帮助。

2 个答案:

答案 0 :(得分:0)

您可以隐藏列:

Data.Columns["IdColumn"].Visible = false;

您可以设置标题:

Data.Columns[0].HeaderText = "Something";

如果您有一些示例代码,我们可能会找到一些通用的方法。

答案 1 :(得分:0)

问题已解决,我向资产类添加了一个名为ModelName的新字符串,并在组合框下拉菜单通过对models表的查找关闭时对其进行了更新。 (我还必须对资产收取实施inotify属性)

感谢您的所有帮助。