Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: True DBGrid название столбцов из DataTable  (Прочитано 11751 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« : 29-01-2009 13:15 » 

Может кто знает, работал с таким гридом от ComponentOne.

Короче я его связываю через DataSource (DataBinding даёт такой же эффект) табличкой DataTable, столбцы которой помимо имени имеют и название (Caption). Так вот FlexGrid, с которым я до сих пор работал, понимает это и автоматически отображет Caption правильно, те то что стоит в таблице. А True DBGrid отображает имена столбцов. Никаких настроек в дизайнере, никаких доп. установок в коде. Те буквально оба грида на форму и в код:

Код:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            // _dataGrid.SetDataBinding(PrepareData(), "", false);
            _dataGrid.DataSource = PrepareData();
            _dataFlexGrid.DataSource = PrepareData();
        }

        private DataTable PrepareData()
        {
            DataTable newTable = new DataTable("table");
            InitColumns(newTable);
            for (int i = 0; i < 5; i++ )
            {
                DataRow newRow = newTable.NewRow();
                newTable.Rows.Add(newRow);
                newRow["C002"] = string.Format("Item{0}", i);
            }
            return newTable;
        }

        private void InitColumns(DataTable newTable)
        {
            DataColumn col = newTable.Columns.Add("C002");
            col.DataType = typeof(string);
            col.Caption = "2";
        }

    }

Может можно у него чего-нить подкрутить, али мозги вправить? Ну ооочень не спортивно (как я это сделал через полчаса бесполезных поисков) запускать цикл присваивания caption.


зы Код хоть и С#, но мне по барабану, хоть в бейсике, если есть решение.
« Последнее редактирование: 29-01-2009 13:17 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-01-2009 16:29 » 

Джон, не понятно таки: надо, чтобы названия брались из DataSource или свои назначить?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 29-01-2009 16:49 » new

Ром, есть два способа показать данные в гриде. Либо самому выстраивать столбцы и строки грида, либо присвоить ему уже существующую структуру, в этом случае он перенимает её свойства: количество ячеек, тип данных и тд. Для второго случая у грида предусмотрено свойство DataSource, или это можно сделать передав таблицу в качестве параметра в ф-ю SetDataBinding.

Те я весь дизайн подготавливаю в объекте DataTable, включая имена колонок, которые должны отображаться в гриде.
Проще говоря, я создаю колонку с именем C002:

DataColumn col = newTable.Columns.Add("C002");

но хочу чтобы в хедере этой колонки (при отображении в гриде) пользователь видел "Привет"

col.Caption = "Привет";

Так вот в одном гриде это работает, без всяких доп. условий и настроек, а в другом - нет. Те я там вынужден обращатся уже непосредственно к сруктурам грида и присваивать им текст:

_dataGrid.Columns["С002"].Caption = "Привет";

хотя я это уже сделал в таблице, которую передал гриду.

Ну собственно говоря вопрос можно упростить, способен ли True DBGrid на такое в принципе, и если да, то что в нём надо подкуртить?

зы да совсем забыл написать, в гриде отображается "C002" вместо "Привет", те имя, а не caption.
« Последнее редактирование: 29-01-2009 16:56 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 29-01-2009 17:03 » 

Т.к. не работал с этим, то на прямой вопрос ответить не могу.

А нельзя ли получить значение Caption из DataSource и присвоить его гриду?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 29-01-2009 17:09 » 

Ром, да вся петрушка в том и заключается, что а) это лишняя ручная работа в UI и б) эти данные уже в DataSource и грид должен их сам использовать, как это, например, делает FlexGrid того же производителя.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 29-01-2009 18:14 » 

Джон, я только с FlexGrid дело имел и мои коллеги тоже. Поэтому ничего кроме "По идее должно работать." сказать не могу Жаль
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 29-01-2009 21:31 » 

Да у нас один товарисч долгое время шизел по нему, а тут убедил начальство, что дескать там некий фильтр очень крутой, ща он нафиг не нужен, но зато в будущем... !!!

И главное обидно, я во вторник уже всё на флексе сделал, осталось только с БД завязать, пришлось ВЕСЬ UI выкинуть, заканчивая формой. А тут ещё такие заморочки.
Ща вот ещё одну выявил. С БД опрашиваются данные о логах, которые приходили с частотой до нескольких десятков штук в секунду (как они это умудрились не знаю). Короче я в гриде показываю дату и времы до секунды, а тут надо и тысячные ещё показывать, чтобы у народа крыша не ехала, если вдруг лог конца придёт до лога старта. Ну ставлю формат с .fff, а он мне .000 показывает. И главное столбик DateTime, так бы в string я бы его быстро уговорил. Пришлось эмпирически доказывать, что сортировка проходит правильно, с точностью до милисекунд. Ещё один столбик временно добавил, с форматнутой строкой. Короче не знаю, чёт он мне как-то подозрителен.

У нас на форуме я только одно предложение по поиску нашёл с True DBGrid да и то шестилетней давности, вот надеюсь может HandKot всё-таки ещё с ним работает, или работал.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines