Как связать список объекта DataObject с сеткой с помощью BindingSources? - PullRequest
2 голосов
/ 26 марта 2010

В сборке я создал класс, подобный следующему:

[DataObject(true)]
public class A
{
 public int Foo{get;set;}

 [DataObjectMethod[DataObjectMethodType.Select)]
 public static List<A> GetAllA(string ConnectionString)
 {
   // return filled List<A>
 }
}

Теперь я хочу отобразить этот список с помощью Gridcontrol под Winforms. Я хоть из DataGrid.
Хотя я прихожу с ASP.net, я бы сначала подумал о

this.dataGridView1.DataSource = A.GetAllA(ConnectionString)

Работает, но я бы предпочел лучшее связывание данных с BindingSources. (Потому что я всегда слышал, что это путь)
Мне удалось добавить BindingSource на форму и установить для свойства DataSource класс A.
Но где я могу установить SelectMethod и его параметры? Если для свойства DataSource объекта dataGridView задать значение BindingSource, оно будет отображать только пустую строку.

Это правильный путь? Для этого потребуется только несколько дополнительных щелчков в мастере или мне нужно прочитать тонны документации, чтобы это заработало?

Редактировать : Есть ли способ автоматического связывания с моим методом выбора? Или BindingSource поддерживает только сопоставление столбцов, но на самом деле не привязывает данные, а значит, мне все же нужно установить свойство DataSource?

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Вам необходимо создать DataSource. Нажмите меню «Данные» и выберите «Добавить новый источник данных ...»

Подключение к данным в Visual Studio. Обзор
http://msdn.microsoft.com/en-us/library/wxt2cwcc(VS.80).aspx

Для подключения вашего приложения к данным в база данных, веб-служба или объект, запустите Конфигурирование источника данных Wizard выбрав Добавить новый источник данных из Источники данных Окно .

Public Class A
    Private _field As String
    Public Property Field() As String
        Get
            Return _field
        End Get
        Set(ByVal value As String)
            _field = value
        End Set
    End Property
End Class

Public Class AListing
    Inherits List(Of A)
End Class
  • Используйте AListing в качестве объекта при добавлении источника данных. Хорошо подходит для видов сетки или подробных форм, обеспечивающих навигацию. Это зависит от вас, чтобы заполнить его.
  • Используйте A в качестве объекта при добавлении источника данных. Подходит для диалога, когда вам нужно привязать только один экземпляр. Это зависит от вас, чтобы заполнить его.

Источник данных просто помогает разработчику настроить привязку данных. Вы все еще должны заполнить объекты. Если вы не заботитесь о поддержке дизайнеров, звоните так, как вы. Использование BindingSource позволяет просто использовать объект, такой как «таблица данных». Используя ваш пример, если я использую BindingSource, я мог бы обработать событие CurrentChanged для любой дополнительной обработки.

this.dataGridView1.DataSource = A.GetAllA(ConnectionString);
//-or-
this.bindingSource1.DataSource = A.GetAllA(ConnectionString);
0 голосов
/ 26 марта 2010

Пусть класс A получает строку подключения из файла конфигурации, а не в качестве параметра в методе GetAllA. Если у вашего метода нет параметров, его можно выбрать в мастере.

...