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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListView c ComboBox 
:(
    Опции темы
Fighter
Дата 26.3.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Есть ли где в Microsoft Visual Studio 2005 какой-нибудь компонент списка, наподобие стандартного ListView, только нужна возможность установки на какую-нибудь колонку comboBox. Например, пользователь добавляет строку в этот ListView, а значение столбца он выбирает из списка comboBox, который появляется на месте этой ячейки. 
PM MAIL   Вверх
vponomarov
Дата 27.3.2008, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Fighter, неа, нет такого компонента.
придется писать самому smile 
как вариант, можно использовать DataGridView


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
VisualProgrammerNET
Дата 27.3.2008, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


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

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



Как мне кажется, юзабилити подобного интерфейса будет плохим (хотя, я не знаю конкретного проекта, в котором подобное решение применяется). Всё же может стоит использовать два отдельных контрола? Сначала выбирать из списка, а потом уже добавлять в ListView? Хотя, как уже упоминал, в конкретном проекте это может быть и хуже =)


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
Fighter
Дата 27.3.2008, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Объясняю данный конкретный случай. Вот есть книга Excel с учебным планом на специальность. И есть база данных Access с преподавателями. В листе Excel выделен отдельный столбец, который будет хранить id каждого преподавателя из базы. Юзабилити данного интерфейса будет как раз в самый раз, так как когда пользователь откроет окно, перед ним появится список  (ListView) с уже выбранными предметами с книги Excel. Пользователю нужно будет только к каждому предмету проставить преподавателя. И естественно, удобнее, когда кликаешь, появляется поле ввода со списком, из которого можно выбрать необходимый элемент. 

А так, есть контрол iGrid for .NET, только он около 300 баксов стоит, так что мне не подойдет (у меня тока дипломный проект). Но, несмотря на это, я понял как сделать это вручную, я тестовый пример уже сделал (не до конца правда), осталось это все применить на практике.

Это сообщение отредактировал(а) Fighter - 27.3.2008, 15:50
PM MAIL   Вверх
vponomarov
Дата 27.3.2008, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Fighter, а зачем мучаться с листВью?
как раз для таких проектов датагрид подхоит отлично!


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Fighter
Дата 27.3.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Цитата(vponomarov @  27.3.2008,  10:37 Найти цитируемый пост)
Fighter, а зачем мучаться с листВью?как раз для таких проектов датагрид подхоит отлично!


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

И из книги Excel удобнее все-таки считывать сразу в listView. 
PM MAIL   Вверх
vponomarov
Дата 27.3.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Fighter, не, ну дело конечно твое, только не вижу как связано использование датагрида с акцесом smile 
его можно с легкостью применять в любых ситуациях: в дизайнере задал тип и описалово столбцов, а потом просто добавляешь сточки как тебе удобно
хотя может я чет неправильно понял


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Fighter
Дата 27.3.2008, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Ну хорошо, а в дата грид можно сделать так, чтобы в отдельных столбцах вместо обычного текста появлялся comboBox? Если так можно, тогда естественно надо использовать датагрид, если тупо обычные строчки, то я уже понял как делать. 
PM MAIL   Вверх
vponomarov
Дата 28.3.2008, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Цитата(Fighter @  27.3.2008,  22:31 Найти цитируемый пост)
Ну хорошо, а в дата грид можно сделать так, чтобы в отдельных столбцах вместо обычного текста появлялся comboBox? Если так можно, тогда естественно надо использовать датагрид, если тупо обычные строчки, то я уже понял как делать.  

конечно можно, я об этом и пытаюсь сказать smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Fighter
Дата 28.3.2008, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Цитата(vponomarov @  28.3.2008,  00:55 Найти цитируемый пост)
конечно можно, я об этом и пытаюсь сказать  


Хорошо. Вот это уже интересно. А можешь рассказать, как это делается?
PM MAIL   Вверх
vponomarov
Дата 28.3.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Цитата(Fighter @  28.3.2008,  01:34 Найти цитируемый пост)
А можешь рассказать, как это делается? 

так там все предельно просто: после того как настроил типы и названия колонок пишешь:
Код

//где-то в дизайнере сделал такое
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.Column2 = new System.Windows.Forms.DataGridViewComboBoxColumn();
// 
            // Column1
            // 
            this.Column1.HeaderText = "Column1";
            this.Column1.Name = "Column1";
            // 
            // Column2
            // 
            this.Column2.HeaderText = "Column2";
            this.Column2.Items.AddRange(new object[] {
            "i1",
            "i2",
            "i3"});
            this.Column2.Name = "Column2";

this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.Column1,
            this.Column2});

private void button3_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Add(new object[] {"aaa", "i2" });
        }



--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Fighter
Дата 28.3.2008, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Классно. Чесслово не знал. Ну а как теперь обратиться к столбцу, в котором есть компобокс и в этот компобокс напихать значений. Из вышеприведенного кода пока что ничего не понял. 
PM MAIL   Вверх
vponomarov
Дата 28.3.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Fighter, читай внимательнее smile :
Код

 this.Column2.Items.AddRange(new object[] {
            "i1",
            "i2",
            "i3"});


короче все как с обычным комбобоксом


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Plamenk
Дата 28.3.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PM MAIL   Вверх
Fighter
Дата 28.3.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Цитата(Plamenk @ 28.3.2008,  11:05)
http://www.codeproject.com/KB/list/XPTable.aspx

Чё та ссылки не работают. Блин, компонент хороший, нужно тока качнуть. 
PM MAIL   Вверх
Fighter
Дата 28.3.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Блин, не работают ссылки. Если кто может, выложите пожалуйста этот компонент в этой теме. 
PM MAIL   Вверх
vponomarov
Дата 28.3.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 12



Fighter, enjoy smile 


Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  XPTable_src.zip 539,94 Kb


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
VisualProgrammerNET
Дата 28.3.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


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

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



Цитата

Блин, не работают ссылки.

ты до сих пор не зарегистрирован на КодеПрожехт? =)  smile 


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
Fighter
Дата 28.3.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Файлы скачал, но, извините, может быть за тупость. Но эти компоненты не совсем работают. Дело в том, что когда саздаешь модель таблицы и выходишь из конструктора. Потом опять заходишь в конструктор моделей таблицы и он пишет что он что-то там сделал с label и поэтому зайти не может. После сохранения и перезагрузки он опять заходит в конструктор, но если опять выйти из конструктора, то до следующей перезагрузки и не дойдет. Это первая беда, а вторая, это то, как устанавливать эти типы столбцов. Лично для своей проблемы, я уже сделал, чтобы комбобокс появлялся, единственное, это нужно отследить собитие скрола. А причин скрола может быть несколько, как нажатие мышкой на одну из кнопкок полосок, или MouseWheel. Тока именно этих событий я не видел. Пока что я далеко не зашел, объясните как работать с XPTable, или если там слишком геморно - тогда объясните как перехватить это событие скрола. Оно необходимо для изменения положения комбобокса. 
PM MAIL   Вверх
Fighter
Дата 29.3.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 2



Спасибо, разобрался я все-таки с дата-гридом. Возможно я не умею устанавливать .NET компоненты, но этот же XPTable работает не полностью. И еще на codeproject я нашел штук 5 таких листвью, и ни один не стал работать. Вот тогда после этого я повнимательнее поизучал DataGridView и у меня все получилось. 

Единственное, возник вопрос с дата гридом. Вот, я создал DataGridComboBoxColumn, и у этой ComboBoxColumn есть свойство DataSource и DataMember. Впринципе, я могу заполнять эти комбобоксы сам, но было бы удобнее, чтобы записи этих комбобоксов брались бы из базы данных. 

Т.е. у меня есть таблица
id_Prepod               PrepodFIO
1                             Иванов И.И.
2                             Петров П.П.

Вот, и нужно, чтобы когда я добавил новую строчку в DataGridView, чтобы в колонке, в которой находится ComboBoxColumn, элементы ComboBox'а были бы записи из базы данных, и естественно, чтобы заполнялись элементы полем PrepodFIO, но в то же время, чтобы я мог узнать, какую именно запись выбрали, т.е. получить id_Prepod. 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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