dataGridView и бизнес объект
От: Cristal  
Дата: 11.06.07 17:53
Оценка:
Добрый день! У меня возникла проблема такого плана:
Имеются бизнес объекты:
    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е.
Re[2]: dataGridView и бизнес объект
От: Cristal  
Дата: 12.06.07 09:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>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.
Возможно ли такое сделать?
Re[3]: dataGridView и бизнес объект
От: kisel Украина  
Дата: 12.06.07 09:47
Оценка:
C>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP.
C>Возможно ли такое сделать?
Нет
Re[4]: dataGridView и бизнес объект
От: Cristal  
Дата: 12.06.07 09:54
Оценка:
Здравствуйте, kisel, Вы писали:

C>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP.

C>>Возможно ли такое сделать?
K>Нет

Т.е. работать в проекте получится только с ДатаСетом который определён в библиотеке?? А зачем тогда в окне выбора источника данных поместили Object?
Re[4]: dataGridView и бизнес объект
От: kisel Украина  
Дата: 12.06.07 09:54
Оценка:
Здравствуйте, kisel, Вы писали:

C>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP.

C>>Возможно ли такое сделать?
K>Нет
1) Источник данных должен релизовывать один из интерфейсов(Ilist,IBindingSource возможно ещё какие то) либо быть DataTable,DataSet ... в MSDN-е побробная информация ... А у тебя обыкновенный классец, который оперирует DataTable.
2) Дизайнер для WinForms не позволяет сжелать этого, в Design Mode он предлагает только выше описанные объекты или интерфейсы.
Re[5]: dataGridView и бизнес объект
От: kisel Украина  
Дата: 12.06.07 09:56
Оценка:
Здравствуйте, Cristal, Вы писали:

C>Здравствуйте, kisel, Вы писали:


C>>>Меня это немного не усраивает — хочется выбрать у myBindingSource через окно Properties свойство DataSource — указать что источником данных будет объект TMC_DB, а затем указать метод который будет данные предоставлять — как это делается с помощью ObjectDataSource в ASP.

C>>>Возможно ли такое сделать?
K>>Нет

C>Т.е. работать в проекте получится только с ДатаСетом который определён в библиотеке?? А зачем тогда в окне выбора источника данных поместили Object?

ответ в соседней ветке ...
Re[5]: dataGridView и бизнес объект
От: Cristal  
Дата: 12.06.07 10:15
Оценка:
Здравствуйте, 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 он предлагает только выше описанные объекты или интерфейсы.

Ого. спасибо! Теперь понял что к чему )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.