Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自定义绑定源?_C#_Asp.net_Winforms - Fatal编程技术网

C#自定义绑定源?

C#自定义绑定源?,c#,asp.net,winforms,C#,Asp.net,Winforms,我的场景是一个asp.net web api 2服务器和一个winforms客户端 我有一个实体(如客户),它的一个属性是“AddressId”,它是addresses实体中地址记录上的id。实体位于web api项目中 我在winforms项目中还有一个自定义控件,它有许多用于地址的文本框(例如街道、房屋、城市、邮政编码等)。我还定义了客户机中的所有数据源 现在,当我检索客户对象时,只检索到addressid。将地址绑定到自定义控件的正确方法是什么?我应该检索扁平化的客户对象还是多次调用api

我的场景是一个asp.net web api 2服务器和一个winforms客户端

我有一个实体(如客户),它的一个属性是“AddressId”,它是addresses实体中地址记录上的id。实体位于web api项目中

我在winforms项目中还有一个自定义控件,它有许多用于地址的文本框(例如街道、房屋、城市、邮政编码等)。我还定义了客户机中的所有数据源


现在,当我检索客户对象时,只检索到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有帮助吗?