我在数据库carrier
和vendor
中有2个表。 vendor
的外键为Carrier_Id
。当用户想要添加供应商时,用户将从组合框中选择载体,其中来自载体表的阀门。
我现在遇到的问题是,我不知道如何从组合框中取出阀门,以便我可以将它插入数据库。
我使用此代码从载体表中获取阀门以显示在组合框中。
MyinvoiceDataDataContext contect = new MyinvoiceDataDataContext();
var st = from s in contect.Carriers
select new { s.CarrierID, s.CarrierName};
comVendorCarrier.ItemsSource = st;
comVendorCarrier.DisplayMemberPath = "CarrierName";
comVendorCarrier.SelectedValuePath = "CarrierID";
答案 0 :(得分:2)
要获取此组合框的值(即所选载体),您只需使用两个属性SelectedValue
即可获取CarrierId
或SelectedText
以获取值(即CarrierName
)。
例如,您可以使用以下方式获取所选运营商的ID:
int SelectedCarrierId = int.parse(comVendorCarrier.SelectedValue.ToString());
或者如果您需要CarrierName
,您应该使用:
string CarrierName = comVendorCarrier.SelectedText;
编辑:假设您的表格具有以下结构:
<强>载体:强>
CarrierId
。CarrierName
。<强>供应商:强>
VendorId
。CarrierId
:外键引用Carriers(CarrierId)。VendorName
。这两个表应该在 .dbml 文件中映射到两个实体Vendor
和Carrier
,其中Vendor
类具有类型属性Carrier
代表外键CarrierID
。
然后,为了查看供应商列表中的CarrierName
,您可以执行以下操作:
var vendorsList = _db.Vendors
.Select( vendor => new
{
VendorId = vendor.Id,
VendorName = vendor.Name,
CarrierName = vendor.Carrier.Name
});
答案 1 :(得分:0)
using (MyinvoiceDataDataContext connv = new MyinvoiceDataDataContext())
{
Vendor editven = (from s in connv.Vendors
where s.VendorID == vendor.VendorID
select s).FirstOrDefault();
editven.VendorAddress = editven.VendorAddress;
editven.VendorBalance = editven.VendorBalance;
editven.VendorContactName = editven.VendorContactName;
editven.VendorEmail = editven.VendorEmail;
editven.VendorFax = editven.VendorFax;
editven.VendorName = editven.VendorName;
editven.VendorPaymentTerms = editven.VendorPaymentTerms;
editven.VendorPhone = editven.VendorPhone;
editven.VendorRemark = editven.VendorRemark;
editven.VendorTax = editven.VendorTax;
editven.VendorWebsite = editven.VendorWebsite;
editven.CarrierID = editven.CarrierID;
connv.SubmitChanges();
}