C#自定义绑定源?
我的场景是一个asp.net web api 2服务器和一个winforms客户端 我有一个实体(如客户),它的一个属性是“AddressId”,它是addresses实体中地址记录上的id。实体位于web api项目中 我在winforms项目中还有一个自定义控件,它有许多用于地址的文本框(例如街道、房屋、城市、邮政编码等)。我还定义了客户机中的所有数据源C#自定义绑定源?,c#,asp.net,winforms,C#,Asp.net,Winforms,我的场景是一个asp.net web api 2服务器和一个winforms客户端 我有一个实体(如客户),它的一个属性是“AddressId”,它是addresses实体中地址记录上的id。实体位于web api项目中 我在winforms项目中还有一个自定义控件,它有许多用于地址的文本框(例如街道、房屋、城市、邮政编码等)。我还定义了客户机中的所有数据源 现在,当我检索客户对象时,只检索到addressid。将地址绑定到自定义控件的正确方法是什么?我应该检索扁平化的客户对象还是多次调用api
现在,当我检索客户对象时,只检索到addressid。将地址绑定到自定义控件的正确方法是什么?我应该检索扁平化的客户对象还是多次调用api来检索地址字段等其他详细信息?考虑到您的评论,我建议如下: 在您的web应用程序(asp.net部分)中: 首先,创建一个由Address类组成的Customer类
public class Customer
{
public int CustomerID;
public string CustomerName;
public uint CustomerPhoneNo;
public Address CustomerAddress; //The address field here for every customer
}
public class Address
{
public string Street;
public string House;
public string City;
public string Postcode;
}
第二,如何在你的客户中实现这一点
CustomerID
,然后当您从Windows窗体(客户端)查询时,传递ID,web api应该返回Customer
的对象李>
CustomerAddress
字段填充windows窗体,该字段还包含城市
、街道
、房屋
和邮政编码
更新:
在Windows窗体中,考虑一个控件,即“代码> AddiSuxRealEng/<代码>,它具有不同的文本框,那么,您需要在Windows窗体中拥有<代码>客户< /COD>实体副本,并使用如下:
例如,addressUserControl\u load
事件,添加相应项的值:
//customer is an object of Customer
StreetTextBox.Text = customer.CustomerAddress.Street;
HouseTextBox.Text = customer.CustomerAddress.House;
CityTextBox.Text = customer.CustomerAddress.City;
PostTextBox.Text = customer.CustomerAddress.Postcode;
现在,我建议您将所有
实体
(如客户类)移动到库项目中。对asp.net和windows窗体项目使用相同的实体库。确保您要创建和检索相同的对象。听起来您需要客户中的Address对象以及AddressId。然后您可以将customer.Address绑定到ui。@artm查看我还定义了我的客户端中的所有数据源OP会考虑将客户端的customer实体作为windowsform@Ivan那么你现在是如何得到地址ID的呢?如果我没有错,这是一个web api调用,当您检索Customer
对象时,您有AddressId
?@LearningNeverStops是的,我有id,但是我想在address自定义控件中显示地址详细信息,并将addressId保留在后台。因此bindingsource属性应该是CustomerAddress而不是CustomerAddressId。自定义控件在设置其bindingsource时如何读取地址属性?是否存在事件?是,BindingSource可以是CustomerAddress。自定义控件是如何定义的?该控件中的所有内容是什么?基于此,您可以从CustomerAddress中提取数据并填充控件。自定义控件仅具有4或5个文本框,表示地址实体中的字段。设置bindingsource时,地址属性如何放置在文本框中?有活动吗?没有直接的活动可以帮助你自动完成。我会更新答案,以便进行控制。@Ivan MarkDebono有帮助吗?