Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как организовать работу с GridView 
:(
    Опции темы
D_F_V
  Дата 11.12.2007, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 27.3.2007
Где: Vladivostok

Репутация: нет
Всего: 1



Ситуация, необходимо отобразить таблицу в GridView из базы данных...
честно говоря не знаю каким путем тут пойти...

- Получаю данные из базы в DataTable и делаю DataBind к GridView, при выборе данных из GridView получаю текущую строку SelectionChanged() и работаю с ее данными... Все работает, но не очень нравиться что бизнес логика завязана на представление... 

Хотелось бы что бы что то вроде...

 - Получаю данные из базы в DataTable (ну или объект переноса данных), заполняю список объектов данными, и делаю DataBind к GridView.  С этой частью все ясно...  А вот как при работе с GridView иметь указатель на объект не могу придумать... Тоесть смысл в том что бы в SelectionChanged() GridView-а получать только ID объекта а дальше по этому ID иметь указатель на элемент списка объектов... 

прошу совета.... 
PM MAIL ICQ MSN   Вверх
thomas
Дата 11.12.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



D_F_V, 
Приветствую.
Что вы подразумеваете под GridView? Контрол для Windows Form или для Web Form. Как говорят в Одессе, это две большие разницы.

Для Windows Forms используется DataGridView. А вот для этого
Цитата

А вот как при работе с GridView иметь указатель на объект не могу придумать...
 
Можно использовать BindingNavigator. Он даст вам "указатель на объект".



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
D_F_V
Дата 12.12.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 27.3.2007
Где: Vladivostok

Репутация: нет
Всего: 1



thomas

да, я имел ввиду DataGridView, извиняюсь за неточность...

Вопрос для себя решил... решение оказалось достаточно простым, паттерн "Table Module"... 
Все вроде работает.., возможно у кого будут замечания по коду, может гдето я что то не так делаю... с радостью выслушаю мнение опытных людей, я тока учусь...  smile 

В домене:

Код


class TableModule
    {
        protected DataTable _table;

        public TableModule(DataSet ds, String tableName)
        {
            _table = ds.Tables[tableName];
        }
    }

    class customer : TableModule
    {
        String _filter;

        public customer(DataSet ds) : base(ds, "CUSTOMER") { }

        public DataTable TABLE
        {
            get { return _table; }
        }

        public string NAME
        {
            get { return _table.Select(_filter)[0].ItemArray[1].ToString(); }
        }

        public string KEY
        {
            set { _filter = String.Format("ID = {0}", value); }
        }

        public DataRow this[int key]
        {
            get
            {
                _filter = String.Format("ID = {0}", key);
                return _table.Select(_filter)[0];
            }
        }
    }


В Представлении:
Код

   //// Передаю ссылку DataSet в объект
   customer _customer = new customer(dataSet1);
  /// Получаею ссылку на таблицу (которую при желании можно модифицировать в объекте)
   dataGridView1.DataSource = _customer.TABLE;


SelectionChanged DataGridView:

Код

     private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            DataGridView _grid = (DataGridView)sender;
            try
            {
               //// Устанавливаю значение фильтра (можно конечно через функцию возвращать значение, но так мне почему то больше нравиться..)
                _customer.KEY = _grid.SelectedRows[0].Cells[0].Value.ToString();
               /// Теперь могу обращаться напрямую к любым свойствам таблицы...
                labelName.Text = _customer.NAME;
            }
            catch
            {
                labelName.Text = "Oops!";
            }
        }


Так же _costomer может возвращать DataRow таблицы по ключу:

Код

        DataRow _row = _customer[4];


PM MAIL ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.