我有一个表INVOICEDETAILS,其中包含PRODUCTID。我想创建一个组合框,它从INVENTORY表中获取所有可能的PRODUCTID值,但将所选值保存到INVOICEDETAILS表中。
我可以通过DATASOURCE属性用INVENTORY值填充组合框,但我无法弄清楚如何将选定的组合框值保存到INVOICEDETAILS中。实现这一目标的最佳实践方法是什么?
我能够通过制作一个绑定到INVOICEDETAILS PRODUCTID字段的虚拟标签,然后在组合框更改时更新标签TEXT值,但1)这看起来像一个kludge,以及2)虚拟标签必须这样做设置为VISIBLE以使其工作。
谢谢!
答案 0 :(得分:1)
根据您对数据源的使用情况,答案有所不同。通常,您将使用DataSet作为数据源,并通过指定ValueMember来处理此问题,然后将该值成员保存为常规DataSet保存例程的一部分。
示例:
private void PopulateComboBox()
{
DataSet Source = RetrieveDataSet();
myComboBox.DataSource = Source;
myComboBox.ValueMember = "MemberColumnName";
}
private void SaveData()
{
DataSet UpdatedData = GetUpdatedData(); //will put myComboBox.ValueMember into the appropriate column in UpdatedData
DoDBSave(UpdatedData); // Will call a serialization routine that knows how to deal with UpdatedData
}
答案 1 :(得分:0)
我只是单向绑定组合框,所以你可以从库存表中获取值,但我不会使用数据源控件或任何东西来进行保存。我只是调用我必须保留invoicedetails数据的任何业务对象方法,将选定的组合框值作为参数。