保存时从 CategoryName 转换为 CategoryID

Convert from CategoryName to CategoryID when saving

根据上图,我想保存在组合框中选择的 CategoryNameCategoryID

我用 enum 做过一次,但是 CategoryName 来自数据库而不是 enum

我该怎么做?或者这可能吗?

如果您想要一个向用户显示字符串但将 ID 值保存到数据库的组合框控件,您应该使用 LookUpEdit 控件。

将 LookUpEdit.Properties.DataSource 属性 绑定到 IEnumerable 的实例,例如 DataTable 或 List。然后将 LookUpEdit.Properties.DisplayMember 属性 设置为数据源中的字符串 field/property 并将 LookUpEdit.Properties.ValueMember 属性 设置为该数据源中的整数 field/property 代表字符串的值。

参见:Standard Binding (to Simple Data Types)

-和-

Advanced Binding (to Business Objects)

例如,如果您有一个 Sql 查询,例如:

SELECT CategoryID, CategoryName FROM Categories

以及执行此查询的方法和 returns 来自此查询的数据表“dtCategories”,您可能会这样做:

myLookUpEdit.Properties.DisplayMember = CategoryName;
myLookUpEdit.Properties.ValueMember = CategoryID;
myLookUpEdit.Properties.DataSource = dtCategories;

LookUpEdit.EditValue 属性 将是所选的 CategoryID。

Dale 的解决方案似乎假设您使用的是 ASP.NET 组合框控件,根据您的屏幕截图显然不是这种情况。没有“DataBind”方法。