2014-10-08 4 views
0

Мой сценарий - это сервер app 2 для ASP.NET и клиент winforms.C# custom bindingsource?

У меня есть объект (например, клиент), и одним из его свойств является «AddressId», который является идентификатором в записи адреса в объекте адресов. Объекты находятся в проекте web api.

У меня также есть настраиваемый элемент управления в проекте winforms, который имеет несколько текстовых полей для адреса (например, улица, дом, город, почтовый индекс и т. Д.). Я также определил все источники данных в моем клиенте.

Теперь, когда я извлекаю объект клиента, я получаю только адрес. Каков правильный способ привязки адреса к пользовательскому элементу управления? Должен ли я получить сплющенный объект клиента или сделать несколько вызовов в api для получения дополнительных данных, таких как поля адреса?

+0

Похоже, вам нужен объект Address в вашем Клиенте, а также AddressId. Затем вы можете привязать своего клиента. Подходите к ui. – artm

+0

@artm, смотрящий на «Я также определил все источники данных в моем клиенте». OP рассмотрел бы, что клиентская сторона на стороне клиента является формой окна –

+0

@ Ивана, так как теперь вы получаете AddressId? Если я не ошибаюсь, это вызов веб-api, а затем, когда вы извлекаете объект Customer, у вас есть 'AddressId'? –

ответ

0

Учитывая ваш комментарий, я хотел бы предложить что-то вроде этого:

в вас веб-приложений (ASP.NET часть):

Во-первых, создать класс клиентов, который имеет состав Адрес класса.

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 (клиент), передать идентификатор, который веб-апи должен возвращать объект Customer.
  2. На стороне клиента вы должны убедиться, что у вас есть одна и та же структура Entity. (Customer Class)

После всего этого, заполнить ваши окна образуют с CustomerAddress поле, которое в дальнейшем имеет City, Street, House и Postcode.

Update:

В вашей форме окна, рассмотрим управление, addressUserControl, которые имеют разные текстовое поле, а затем, вам нужно иметь Customer Entity реплики в окна формы и использовать следующим образом:

Скажем, 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) в проект библиотеки. Используйте ту же библиотеку Entities для ваших проектов asp.net и окон. Обеспечение того, что у вас есть один и тот же объект для создания и извлечения.

+0

Таким образом, свойство bindingsource должно быть CustomerAddress вместо CustomerAddressId. Как пользовательский элемент управления может считывать свойства Address при настройке источника привязки? Есть ли какое-то событие? –

+0

Да, BindingSource может быть CustomerAddress. Как определяется ваш пользовательский контроль? Что все присутствует в этом контроле? На основании этого U может извлечь данные из CustomerAddress и заполнить элемент управления. –

+0

Пользовательский элемент управления просто имеет 4 или 5 текстовых полей, которые представляют поля в сущности Address. При настройке источника привязки, как свойства адреса помещаются в текстовые поля? Есть ли какое-то событие? –

Смежные вопросы