gpt4 book ai didi

c# - 根据绑定(bind)源中的外键显示查找值

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:39 25 4
gpt4 key购买 nike

我正在寻找在 BindingSource 中显示外键值的“最佳实践”。

示例数据:

PetID---PetName---PetTypeID
1---Tom---1
2---Jerry---2


PetTypeID---PetType
1---Cat
2---Mouse

我有一个 Pet 类和 Pet 表单。下面的代码是在Pet窗体上以Pet集合的形式从数据库返回数据并绑定(bind)数据:

private BindingSource PetBindingSource = new BindingSource();
PetBindingSource.DataSource = Pet.GetPets();

txtPetName.DataBindings.Add(new Binding("Text", PetBindingSource, "PetName"));
txtPetType.DataBindings.Add(new Binding("Text", PetBindingSource, "PetTypeID"));

对于当前示例,txtPetType 将显示 PetTypeID(1 或 2),但我希望它显示实际值(Cat 或 Mouse)。

那么,处理此类问题的最佳做法是什么?向 Pet 类添加新属性?在存储过程中连接两个表返回值?其他选择?

注意:PetName 是可编辑的,而 PetTypeID 在这种情况下是只读的,所以我想排除组合框。

非常感谢解释、示例和阅读资源!

最佳答案

门面属性是最简单的选项——尤其是当它是只读的时候;只需添加一个遍历关系的属性(如果生成了类型,则在 partial 类中)。不过还有其他路线。您可以编写一个 TypeConverter 并用它装饰属性;但是,这对于生成的类型来说是一个痛苦(因为您不能将属性添加到在单独的部分类文件中声明的成员)。您还可以使用自定义属性模型(ICustomTypeDescriptor/TypeDescriptionProvider),但这些将大量矫枉过正只是 .

我可以根据需要扩展其中的任何一个......但大多数(除了第一个)都是大量的工作......

关于c# - 根据绑定(bind)源中的外键显示查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com