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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> master/detail в одном DataGridView 
V
    Опции темы
Linus
Дата 31.5.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



Тема, как я понимаю, заезженная, но ответа я так и не нашёл :(
В датасете есть две таблицы:

Cars
   driver_name  
   id_color------------|
   year                    |
   car_number        |
                              |
Colors                   |
   id_color -----------|
   name

Мне нужен DataGridView, в котором были бы колонки:
driver_name (TextBoxColumn), color (ComboboxColumn), year (TextBoxColumn), car_number (TextBoxColumn)

Сам цвет должен с учётом связи подгружаться из таблицы Colors, и светиться в ComboboxColumn. Всё это хотел как-то связать, чтобы DataGridView правильно отображал данные. А ещё хотел добавить строку в самый верх грида и заморозить её, чтобы введенные в эту строку значения были параметрами для фильтрации всех остальных колонок DataGridView. Вот и не могу придумать, как это всё реализовать, а в ручную (заполнение грида циклом и т.д.) не хочу. Помогите пожалуйста.
PM MAIL ICQ   Вверх
emmanuil
Дата 1.6.2007, 05:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот тут есть пример как мастер-детатд делать, правдо там используется грид DevExpress, но это ничего не меняет, вместо него подставь свой.
http://forum.vingrad.ru/forum/topic-149519...0%B8%D0%B5.html

PM MAIL   Вверх
Linus
Дата 1.6.2007, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



emmanuil, я уже так пробовал, но никак не получается, чтобы колонка с цветом была выпадающим списком :( Вместо комбобокса светится обычное текстовое поле с id цвета. Вот код:

Код

public Form1()
{
    InitializeComponent();
    DataGridView DGV = new DataGridView();
    DGV.Parent = this;
    DGV.Dock = DockStyle.Fill;

    DataSet ds = new DataSet("CarsColors");
    DataTable dtCars = new DataTable("Cars");
    dtCars.Columns.Add("driver_name");
    dtCars.Columns.Add("id_color");
    dtCars.Columns.Add("year");
    dtCars.Columns.Add("car_number");
    dtCars.Rows.Add(new object[] { "Иван Иванов Иванович", 1, 1956, "А013659" });
    dtCars.Rows.Add(new object[] { "Валера Валеров Валерович", 3, 1937, "C24679" });
    dtCars.Rows.Add(new object[] { "Пётр Петров Петрович", 2, 1994, "M012349" });

    DataTable dtColors = new DataTable("Colors");
    dtColors.Columns.Add("id_color");
    dtColors.Columns.Add("name");
    dtColors.Rows.Add(new object[] { 1, "Белый" });
    dtColors.Rows.Add(new object[] { 2, "Красный" });
    dtColors.Rows.Add(new object[] { 3, "Синий" });

    ds.Tables.Add(dtCars);
    ds.Tables.Add(dtColors);

    DataRelation rel = new DataRelation("relat", ds.Tables["Colors"].Columns["id_color"], ds.Tables["Cars"].Columns["id_color"]);
    ds.Relations.Add(rel);

    DGV.DataSource = ds.DefaultViewManager;
    DGV.DataMember = "Cars";
}

PM MAIL ICQ   Вверх
Linus
Дата 1.6.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



А хотел я сделать вот так:

Код

public Form1()
{
    InitializeComponent();
    DataGridView DGV = new DataGridView();
    DGV.Parent = this;
    DGV.Dock = DockStyle.Fill;

    DataSet ds = new DataSet("CarsColors");
    DataTable dtCars = new DataTable("Cars");
    dtCars.Columns.Add("driver_name");
    dtCars.Columns.Add("_id_color");
    dtCars.Columns.Add("year");
    dtCars.Columns.Add("car_number");
    dtCars.Rows.Add(new object[] { "Иван Иванов Иванович", 1, 1956, "А013659" });
    dtCars.Rows.Add(new object[] { "Валера Валеров Валерович", 3, 1937, "C24679" });
    dtCars.Rows.Add(new object[] { "Пётр Петров Петрович", 2, 1994, "M012349" });

    DataTable dtColors = new DataTable("Colors");
    dtColors.Columns.Add("id_color");
    dtColors.Columns.Add("name");
    dtColors.Rows.Add(new object[] { 1, "Белый" });
    dtColors.Rows.Add(new object[] { 2, "Красный" });
    dtColors.Rows.Add(new object[] { 3, "Синий" });

    ds.Tables.Add(dtCars);
    ds.Tables.Add(dtColors);

    DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
    column.HeaderText = ":)";
    column.DisplayMember = "name";
    column.ValueMember = "id_color";
    column.DataPropertyName = "_id_color";
    column.DataSource = ds.Tables["Colors"];

    DGV.DataSource = ds.DefaultViewManager;
    DGV.DataMember = "Cars";
    DGV.Columns.Insert(1, column);
}


В принципе, если поднять "DGV.Columns.Insert(1, column);" выше (после 33-й строки), и заменить единичку на нолик (вставка самого первого столбца), то само поле _id_column светиться не будет, а будут только комбобоксы (что и требовалось). Значит этот вопрос решён. А на счёт фильтрации буду отдельно думать...

Фсем пасиба smile

Это сообщение отредактировал(а) Linus - 1.6.2007, 20:25
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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