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


Автор: NikeDeForest 14.9.2009, 16:52
Есть оснвоной dataGridView, в нем отображается табличные данные. Тип таблиц около 5. Вот вопрос как быть. Можно создать заранее 5 Гридов, каждый настроенный под опред тип таблиц. И соотвественно при выводе опред таблицы делать этот Грид видимым, а остальные наоборот.
Второй вариант, это все время редактировать один грид, удаляя и создаая зановов столбцы под таблицы.
Третий вариант — гасить весь Грид, наверное бессмысленный самый.
На чем остановиться?
Столбцов в среднем от 10 до 15

Автор: diadiavova 14.9.2009, 19:58
Если все таблицы в одном DataSet, то cdjqcnde Datacource грида надо присвоить этот DataSet, а свойству DataMember присваивать имя нужной таблицы. Если таблицы берутся из разных мест, то свойству DataSource присваивать нужную таблицу по необходимости.

Автор: NikeDeForest 15.9.2009, 10:15
Автогенерация выключена, потому что надо чтобы по краям были два столбца с кнопками. Столбцы одинаковы для всех таблиц.

Автор: NikeDeForest 16.9.2009, 09:39
diadiavova,  стал делать как ты посоветовал. Столкнулся со следующей проблемой. Заранее создаю три столбца с кнопками, которые одинаковы для всех. По началу делаю их невидимыми. После привязки источника данных свойству DisplayIndex этих трех столбцов присваиваю номера и  свойству Visible присваиваю true.
Столбец, который должен отображаться самым первым таковым и отображается, а вот столбцы, которые должна быть в конце отображаются не совсем верно:
- первый раз - за пределами обалсти видимости (при этом прокрутки нет и менчть размеры столбцов приходится вручную) и т.п.
-последующие разы они отображаются сразу следом за первым столбцом, т.е. столбцом с DisplayIndex=0;
Присваиваю номера так:
Код

Form.MainDataGridView.Columns["SuggestColumn"].DisplayIndex = 0;
                                                       Form.MainDataGridView.Columns["SuggestColumn"].Visible = true;
                                                       Form.MainDataGridView.Columns["LogColumn"].DisplayIndex = Form.MainDataGridView.ColumnCount-1;
                                                       Form.MainDataGridView.Columns["LogColumn"].Visible = true;
                                                       Form.MainDataGridView.Columns["DescriptionColumn"].DisplayIndex = Form.MainDataGridView.ColumnCount-1;
                                                       Form.MainDataGridView.Columns["DescriptionColumn"].Visible = true


Видимо чего-то не хватает? Не нужна ли какая-то перисовка и т.п.?

И вот что мне еще прихожится делать
Код


Form.MainDataGridView.DataMember = String.Empty;
Form.MainDataGridView.DataSource = null;

                                           Form.MainDataGridView.DataMember = "Positions"; 
                                           Form.MainDataGridView.DataSource = binding;

Объясняю зачем обнуляю DataSource, при смене binding, а  именно если меняется таблица (при том же типе таблицы все ОК), то первый раз ДатаГридВью отображается пустым. Отладчиком если смотреть, то получается, что мы доходим до строки 
Form.MainDataGridView.DataSource = binding;
А потом происходит выход из текущего метода, не смотря на то, что дальше есть код. Никакого экзепшина, ничего, просто выход.
Это нормально?

Автор: diadiavova 16.9.2009, 09:49
NikeDeForest, я сейчас всю картинку не помню, а студии под рукой нет(шарпдевелоп - не вариант smile ). Из того, что ты написал я не всё понял. Поэтому сделай небольшой примерчик проекта с твоей проблемой и выложи. Так ты дождёшься помощи гораздо быстрее. Если в ближайшие полторы недели никто не возьмётся и сам не решишь, то я посмотрю из дома и разберу на студии. Так просто сказать почему прерывается выполнение метода видимо невозможно, надо смотреть в отладчике.

Автор: VeryWell 17.9.2009, 15:05
Цитата

А потом происходит выход из текущего метода, не смотря на то, что дальше есть код. Никакого экзепшина, ничего, просто выход.
Это нормально?

На самом деле он не выходит, а проскакивает эти строчки, но при этом выполняет их. Поставь на против каждой из строчек метку остановки и прогони их через F5. 
Для решения проблемы попробуй поставить  DataBinding=true; Связывая данные он и отрисует, если не ошибаюсь.

Удачного кодинга.

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