Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2011, 23:28   #1
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
Восклицание DataGridViewComboBoxColumn

Добрый вечер! Столбец подстановки добавляю в DataGridView следующим образом:

Код:
            
            dataGridView1.DataSource = dataset.DefaultViewManager;
            dataGridView1.DataMember = dataset.Tables[0].TableName;

            for (int i = 0; i < dataset.Tables[0].Columns.Count; i++)
            {
                if (dataset.Tables[0].Columns[i].ColumnName == "Должность")
                {
                    col = new DataGridViewComboBoxColumn();
                    col.DataSource = dataset.Tables[1];
                    col.ValueMember = dataset.Tables[1].Columns[0].ColumnName;
                    col.DisplayMember = col.ValueMember;
                    col.HeaderText = dataset.Tables[1].Columns[0].ColumnName;
                    col.DataPropertyName = col.ValueMember;
                    col.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
                    dataGridView1.Columns.Insert(i, col);
                }
Добавляется корректно, только старый столбец также добавляется. И у меня получается 2 столбца "Должность". Если убрать строки
Код:
            dataGridView1.DataSource = dataset.DefaultViewManager;
            dataGridView1.DataMember = dataset.Tables[0].TableName;
или только
Код:
dataGridView1.DataMember = dataset.Tables[0].TableName;
то в гриде содержимое таблицы не отображается. Подскажите пожалуйста, как это устранить? Заранее премного благодарен
JeyKip вне форума Ответить с цитированием
Старый 03.05.2011, 23:34   #2
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

Прошу прощения за наведенный кипеш Разобрался. Поступил следующим образом:
Код:
  
            //убрал автогенерацию столбцов          
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = dataset.DefaultViewManager;
            dataGridView1.DataMember = dataset.Tables[0].TableName;

            for (int i = 0; i < dataset.Tables[0].Columns.Count; i++)
            {
                if (dataset.Tables[0].Columns[i].ColumnName == "Должность")
                {
                    col = new DataGridViewComboBoxColumn();
                    col.DataSource = dataset.Tables[1];
                    col.ValueMember = dataset.Tables[1].Columns[0].ColumnName;
                    col.DisplayMember = col.ValueMember;
                    col.HeaderText = dataset.Tables[1].Columns[0].ColumnName;
                    col.DataPropertyName = col.ValueMember;
                    col.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
                    dataGridView1.Columns.Add(col);
                }
//если поле не "Должность", тогда добавляю столбец типа DataGridViewTextBoxColumn
                else 
                {
                    text = new DataGridViewTextBoxColumn();
                    text.HeaderText = dataset.Tables[0].Columns[i].ColumnName;
                    text.DataPropertyName = dataset.Tables[0].Columns[i].ColumnName;
                    text.Name = text.HeaderText;
                    dataGridView1.Columns.Add(text);
                }
                
            }
JeyKip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск