Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Присвоить индекс DataGridViewColumn


Автор: darkness 14.7.2007, 05:47
Народ словил тупняк, подскажите!
Имеем DataGridView. Задасетил одну таблицу из базы к нему, все колонки  сгенерились на автомате, но мне необходимо задать опредедённое поведение препослдней колонке, а точнее чтобы TextBox была, а CheckBox. Когда одну колонку я задаю явно, она у меня получается идёт первой в Гриде, а надо чтобы предпоследней... Как задать подобный порядок? Неужели нужно переопредлять другие колонки явно?

Автор: mr.DUDA 14.7.2007, 10:23
А если в конструкторе формы или грида переставить колонку в нужную позицию?

Автор: tol05 14.7.2007, 15:59
http://msdn.microsoft.com/msdnmag/issues/07/01/DataPoints/default.aspx?loc=ru не поможет?
Цитата

Вопрос. Есть элемент управления DataGridView (вид таблицы для отображения данных), связанный со свойством DefaultView (вид по умолчанию) таблицы DataTable. Источником данных таблицы DataTable является хранимая процедура, извлекающая данные из базы данных приложения. Все поля возвращаются в определенном порядке, но вывести эти поля на экран в элементе управления DataGridView нужно в другом порядке. Как можно изменить порядок размещения столбцов в DataGridView?

Ответ. Иногда необходимо изменить порядок столбцов в таблице DataTable, но изменять последовательность полей в команде SQL неудобно. Объект DataColumn предоставляет метод SetOrdinal, позволяющий изменить последовательность столбцов в таблице DataTable.

Порядковые номера начинаются с нуля, поэтому, чтобы в первом столбце отображался четвертый, нужно использовать следующий код: 
Код

myDataTable.Columns[0].SetOrdinal(3);

При желании можно ссылаться на столбец по его имени, а не по порядковому номеру: 
Код

myDataTable.Columns["OrderID"].SetOrdinal(3);


P.S. хотелось бы посмотреть как ты тип колонки устанавливаешь

Автор: darkness 14.7.2007, 18:35
mr.DUDA, дело в том, что у меня ДатаГридВью формируется на основании Дата Сета, а в самом гриде  установлена всего лишь одна колонка  которую бы и хотелось бы выпихнать на середину или в конец...


tol05, твой метод решает вопрос на уровне ДатаСета, а мне желательно бы на уровне грида

вот мой код:
Код

DataGridViewColumn stat = new DataGridViewCheckBoxColumn(); // создаю сам чекбокс
            stat.HeaderText = "stat";   
            stat.Name = "stat";
            countDGV.DataSource = ds.Tables["accounts"];   //пошла привязка
            countDGV.Columns.Add(stat);       //добавляю в Грид, в этом случае этот столбец у меня          получается последним
            countDGV.Columns["stat"].DataPropertyName = "status"; 
            countDGV.Columns["stat"].Frozen = true;
            countDGV.Columns["status"].Visible = false;  // вот а тот автосгенеренный столбец делаю невидимым 



Автор: tol05 14.7.2007, 19:10
darkness, а что Columns у DataGridView только метод Add имеют?  smile 
Код

public virtual void Insert (int columnIndex, DataGridViewColumn dataGridViewColumn)


а вот так не пробовал?
Код

countDGV.Columns.Insert (2, stat); //или любой другой индекс

Автор: darkness 15.7.2007, 06:12
tol05, да ты прав набрёл на этот метод ещё вчера (как руки дошли плюс на свежую голову) - не отписался т.к. инет закончился, сорр....
Отвечавшим спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)