【问题标题】:C# custom bindingsource?C# 自定义绑定源?
【发布时间】:2014-10-08 07:57:16
【问题描述】:

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

我有一个实体(例如客户),它的属性之一是“AddressId”,它是地址实体中地址记录上的 ID。实体在 web api 项目中。

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

现在,当我检索客户对象时,我只检索到 addressid。将地址绑定到自定义控件的正确方法是什么?我应该检索扁平化的客户对象还是多次调用 api 来检索地址字段等其他详细信息?

【问题讨论】:

  • 听起来您需要 Customer 中的 Address 对象以及 AddressId。然后你可以将你的 customer.Adress 绑定到 ui。
  • @artm 看着 I have also defined all the data sources in my client OP 会考虑让客户实体在客户端是 windows 窗体
  • @Ivan 那么您现在如何获得 AddressId?如果我没记错的话,它是一个 web api 调用,然后当你检索 Customer 对象时,你有 AddressId?
  • @LearningNeverStops 是的,我有 id,但我想在地址自定义控件中显示地址详细信息,并将 addressId 保留在后台。

标签: c# asp.net winforms


【解决方案1】:

考虑到您的评论,我建议如下:

在您的网络应用程序中(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;
}

其次,如何在您的客户端中获取此信息?

  1. 确保您有一个CustomerID,然后当您从Windows 窗体(客户端)查询时,传递ID,Web api 应该返回Customer 的对象。
  2. 在您的客户端,您应该确保您具有相同的实体结构。 (客户类)

在所有这些之后,使用CustomerAddress 字段填充您的窗口表单,该字段还有CityStreetHousePostcode

更新:

在你的windows窗体中,考虑一个控件addressUserControl,它有不同的文本框,那么你需要在windows窗体中拥有CustomerEntity副本并使用如下:

说,addressUserControl_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;

现在,我建议您将所有 Entities(如 Customer 类)移动到库项目中。为您的 asp.net 和 windows 窗体项目使用相同的实体库。确保您有相同的对象来创建和检索。

【讨论】:

  • 所以 bindingsource 属性应该是 CustomerAddress 而不是 CustomerAddressId。自定义控件在设置绑定源时如何读取地址属性?有活动吗?
  • 是的,BindingSource 可以是 CustomerAddress。您的自定义控件是如何定义的?该控件中存在什么?基于此,U 可以从 CustomerAddress 中提取数据并填充控件。
  • 自定义控件只有 4 或 5 个文本框,它们代表地址实体中的字段。设置绑定源时,地址属性如何放置在文本框中?有活动吗?
  • 没有直接的事件可以帮助你自动完成。对于这样的控制,我会更新答案。
  • @Ivan-MarkDebono 有帮助吗?
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2012-12-14
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多