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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отображение данных из базы в Combobox 
:(
    Опции темы
Abr
Дата 24.1.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть такая проблемка, пишу:
Код

       this.dataAd = new SqlDataAdapter(select, con);
       this.dset = new DataSet();
       this.dataAd.Fill(dset, "allProd");
       this.MydataGridView.DataSource = dset.Tables["allProd"];
       this.Mycombobox.DataSource = dset.Tables["allProd"];
        this.Mycombobox.DisplayMember = "t_name";

где select - строка в которой запрос,
t_name - имя столбца данные которого нужно отобразить в Mycombobox.
Но вместо имен выдает: System.Data.DataRowView
PM MAIL   Вверх
mr.DUDA
Дата 24.1.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



DisplayMember определяет имя столбца таблицы, из которого будут заполняться строки combobox; но кроме этого, необходимо задать ещё и Mycombobox.ValueMember - имя столбца таблицы, определяющего числовые значения, соответствующие каждому DisplayMember-у.


--------------------
user posted image
PM MAIL WWW   Вверх
Abr
Дата 25.1.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно чуть подробней про ValueMember.
я пытался задать Mycombobox.ValueMember="id_t" , но выдает ошибку Cannot bind to the new display member.
у меня другой комбобокс настроен на другую выборку, так там все отлично работает без ValueMember,
правда там выбирается один столбец, а в моем примере select возвращает несколько столбцов.
PM MAIL   Вверх
alexgorbach
Дата 8.11.2013, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что ж, подниму древнюю тему, но вроде как раз по моей проблеме. Если кто подскажет - буду очень признателен.
Дело происходит на C# + MS SQL Server 2008.
Ситуация такая: есть главная форме с DataGridView(DGV) и множеством BindingSource(BS). DataSource у DGV меняется на соответствующий BS в зависимости от выбранной для отображения таблицы. Для удобства мои BS привязаны не к таблицам, а к представлениям, дабы отображались не коды из родительских таблиц, а соответствующие осмысленные поля.
Существует также форме детализации, которая должна отображать выбранную запись и давать возможность ее отредактировать. В ее конструктор я передаю DataRow - текущую запись из BS. В этой форме хочу наделать TextBox-ов и ComboBox-ов, прибинденых к моему DataRow. Заполняю ComboBox значениями родительской таблицы, пытаюсь сделать привязку... И тут проблема - DGV после смены значения в ComboBox отображает поле как System.Data.DataRowView.
Как привязать Combobox к таблице понятно - выставить ValueMember на соответствующий код, а к представлению как? В нем у меня нет кодов, только поля, соответствующие кодам. Вот код:
Код

//вызов формы детализации по клику кнопкив главной форме
private void btnDetails_Click(object sender, EventArgs e)
        {
            new DetailForm((currentBindingSource.Current as DataRowView).Row, currentTable).ShowDialog();
            dgvView.Refresh();
        }

//конструктор формы детализации
public DetailForm(DataRow dataRow, Tables table)
        {
            InitializeComponent();
            this.table = table;
            ComboBox cb = new ComboBox();
            cb.DataSource = libraryDataSet.Tables["Читатели"];
            //cb.ValueMember = "Код";                                         ЗДЕСЬ КАК БЫТЬ?
            cb.DisplayMember = "Фамилия";
            cb.DropDownStyle = ComboBoxStyle.DropDownList;
            cb.DataBindings.Add("SelectedItem", dataRow, "Читатель");
            tlp.Controls.Add(cb, 1, 1);
        }


PM MAIL   Вверх
jonie
Дата 9.11.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата(alexgorbach @  8.11.2013,  14:44 Найти цитируемый пост)
Для удобства мои BS привязаны не к таблицам, а к представлениям, дабы отображались не коды из родительских таблиц, а соответствующие осмысленные поля.

представляния это я так понимаю вьюхи в базе... Никто не мешает добавить в них колонку с идентификаторами нужными и указывать как ValueMember их


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
alexgorbach
Дата 10.11.2013, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(jonie @  9.11.2013,  14:09 Найти цитируемый пост)
представляния это я так понимаю вьюхи в базе... Никто не мешает добавить в них колонку с идентификаторами нужными и указывать как ValueMember их 


Точно, как я не догадался, спасибо. Да, представления - это вью. К кодам комбобоксы биндятся нормально, закрываю форму редактирования - и код в DataGridView обновляется, как и положено. Только вот незадача - связанное с этим кодом осмысленное поле-то не меняется.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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