Добрый день! У меня возникла проблема такого плана:
Имеются бизнес объекты:
public class TMC_Details
{
private int id;
public int ID
{
get
{
return this.id;
}
set
{
this.id = value;
}
}
private string nn;
public string NN
{
get
{
return this.nn;
}
set
{
this.nn = value;
}
}
private int group_id;
public int Group_ID
{
get
{
return this.group_id;
}
set
{
this.group_id = value;
}
}
private string name;
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
public TMC_Details()
{
}
public TMC_Details(int id, string nn, int group_id, string name)
{
this.ID = id;
this.NN = nn;
this.Group_ID = group_id;
this.Name = name;
}
}
и
public class TMC_DB
{
private TMC_DSTableAdapters.TMCTableAdapter ta = new TMC_DSTableAdapters.TMCTableAdapter();
public TMC_DB()
{
}
public TMC_DS.TMCDataTable GetByParametrs(string nn, Nullable<int> group_id, string name)
{
return this.ta.GetByParametrs(nn, group_id, name);
}
}
На форму кидаю dataGridView, BindingSource.
У dataGridView в качестве DataSource выбираю BindingSource.
У BindingSource в качестве DataSource выбираю TMC_DB. Не понимаю почему список datamember у BindingSource пуст
В дизайнере получаю следующие строчки кода:
...
this.components = new System.ComponentModel.Container();
....
this.TMCDBBindingSource = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.dgvTMC)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.TMCDBBindingSource)).BeginInit();
....
this.dgvEdIzm.DataSource = this.TMCDBBindingSource;
....
Объясните пожалуйста что ещё необходимо сделать для получения данных из бизнес объекта в dataGridView?
11.06.07 23:18: Перенесено модератором из '.NET' — AndrewVK
Re: dataGridView и бизнес объект
От:
Аноним
Дата:
12.06.07 08:10
Оценка:
Здравствуйте, Cristal, Вы писали:
C>Добрый день! У меня возникла проблема такого плана: C>Имеются бизнес объекты: C>
C> public class TMC_Details
C> {
C> private int id;
C> public int ID
C> {
C> get
C> {
C> return this.id;
C> }
C> set
C> {
C> this.id = value;
C> }
C> }
C> private string nn;
C> public string NN
C> {
C> get
C> {
C> return this.nn;
C> }
C> set
C> {
C> this.nn = value;
C> }
C> }
C> private int group_id;
C> public int Group_ID
C> {
C> get
C> {
C> return this.group_id;
C> }
C> set
C> {
C> this.group_id = value;
C> }
C> }
C> private string name;
C> public string Name
C> {
C> get
C> {
C> return this.name;
C> }
C> set
C> {
C> this.name = value;
C> }
C> }
C> public TMC_Details()
C> {
C> }
C> public TMC_Details(int id, string nn, int group_id, string name)
C> {
C> this.ID = id;
C> this.NN = nn;
C> this.Group_ID = group_id;
C> this.Name = name;
C> }
C> }
C>
C>и C>
C> public class TMC_DB
C> {
C> private TMC_DSTableAdapters.TMCTableAdapter ta = new TMC_DSTableAdapters.TMCTableAdapter();
C> public TMC_DB()
C> {
C> }
C> public TMC_DS.TMCDataTable GetByParametrs(string nn, Nullable<int> group_id, string name)
C> {
C> return this.ta.GetByParametrs(nn, group_id, name);
C> }
C> }
C>
C>На форму кидаю dataGridView, BindingSource. C>У dataGridView в качестве DataSource выбираю BindingSource. C>У BindingSource в качестве DataSource выбираю TMC_DB. Не понимаю почему список datamember у BindingSource пуст C>В дизайнере получаю следующие строчки кода: C>
C>...
C>this.components = new System.ComponentModel.Container();
C>....
C>this.TMCDBBindingSource = new System.Windows.Forms.BindingSource(this.components);
C>((System.ComponentModel.ISupportInitialize)(this.dgvTMC)).BeginInit();
C>((System.ComponentModel.ISupportInitialize)(this.TMCDBBindingSource)).BeginInit();
C>....
C>this.dgvEdIzm.DataSource = this.TMCDBBindingSource;
C>....
C>
C>Объясните пожалуйста что ещё необходимо сделать для получения данных из бизнес объекта в dataGridView?
1)К чему был приведён код бизнесс объекта, если вы используете, как я понимаю типизированный DataSet
2)Где указывается источник данных для TMCDBBindingSource?
3)Если Вы хотите в качетсве источника данных указать DataTable, тогда DataMember будет пустым, он вам не нужен.
DataMember используется, например, когда вы к качестве источника данных используется DataSet а в DataMember указывается уже нужный DataTablе.
Здравствуйте, Аноним, Вы писали:
А>1)К чему был приведён код бизнесс объекта, если вы используете, как я понимаю типизированный DataSet А>2)Где указывается источник данных для TMCDBBindingSource? А>3)Если Вы хотите в качетсве источника данных указать DataTable, тогда DataMember будет пустым, он вам не нужен. А> DataMember используется, например, когда вы к качестве источника данных используется DataSet а в DataMember указывается уже нужный DataTablе.
Ситуация такая — у меня есть библиотека классов, в которой реализован типизированный ДатаСет, также в ней реализован класс для работы с этим Датасетом (выбока данных, редактирование):
public class TMC_DB
{
private TMC_DSTableAdapters.TMCTableAdapter ta = new TMC_DSTableAdapters.TMCTableAdapter();
public TMC_DB()
{
}
public TMC_DS.TMCDataTable GetByParametrs(string nn, Nullable<int> group_id,
string name,)
{
return this.ta.GetByParametrs(nn, group_id, name);
}
public BLL.TMC.TMC_Details GetByID(int id)
{
.....
}
public Nullable<int> Add(TMC_Details new_tmc)
{
.....
}
......
}
Задача такая — используя класс для работы с ДатаСетом (TMC_DB) заполнить данными dataGridView. Если всё писать "ручками" — то всё работает:
TMC_DB db = new TMC_DB();
this.myBindingSource.DataSource = db.GetByParametrs(String.Empty, null, String.Empty);
this.dgvTMC.DataSource = this.myBindingSource;
Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP.
Возможно ли такое сделать?
C>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP. C>Возможно ли такое сделать?
Нет
Здравствуйте, kisel, Вы писали:
C>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP. C>>Возможно ли такое сделать? K>Нет
Т.е. работать в проекте получится только с ДатаСетом который определён в библиотеке?? А зачем тогда в окне выбора источника данных поместили Object?
Здравствуйте, kisel, Вы писали:
C>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP. C>>Возможно ли такое сделать? K>Нет
1) Источник данных должен релизовывать один из интерфейсов(Ilist,IBindingSource возможно ещё какие то) либо быть DataTable,DataSet ... в MSDN-е побробная информация ... А у тебя обыкновенный классец, который оперирует DataTable.
2) Дизайнер для WinForms не позволяет сжелать этого, в Design Mode он предлагает только выше описанные объекты или интерфейсы.
Здравствуйте, Cristal, Вы писали:
C>Здравствуйте, kisel, Вы писали:
C>>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP. C>>>Возможно ли такое сделать? K>>Нет
C>Т.е. работать в проекте получится только с ДатаСетом который определён в библиотеке?? А зачем тогда в окне выбора источника данных поместили Object?
ответ в соседней ветке ...
Здравствуйте, kisel, Вы писали:
K>Здравствуйте, kisel, Вы писали:
C>>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP. C>>>Возможно ли такое сделать? K>>Нет K>1) Источник данных должен релизовывать один из интерфейсов(Ilist,IBindingSource возможно ещё какие то) либо быть DataTable,DataSet ... в MSDN-е побробная информация ... А у тебя обыкновенный классец, который оперирует DataTable. K>2) Дизайнер для WinForms не позволяет сжелать этого, в Design Mode он предлагает только выше описанные объекты или интерфейсы.