Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Подскажите (покажите в коде) как определить количество выбранных пунктов в combobox-ов в datagridview. И как сделать так, чтобы один и тот же пункт в двух и более combobox-ах использовать было невозможно.

        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox cbDgv = e.Control as ComboBox;
            cbDgv.SelectedValueChanged -= new EventHandler(CbDgv_SelectedValueChanged);
            cbDgv.SelectedValueChanged += new EventHandler(CbDgv_SelectedValueChanged);
        }

        //private List<int> SelectedIDs = new List<int>();
        private void CbDgv_SelectedValueChanged(object sender, EventArgs e)
        {
            dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(this.dataGridView1_EditingControlShowing);
            ComboBox box = sender as ComboBox;
            Debug.WriteLine(box.SelectedValue);
            object value = box.SelectedValue;
            var comboBox = (DataGridViewComboBoxEditingControl)sender;
            int rowIndex = comboBox.EditingControlRowIndex;
            var query = $"SELECT id_Object, Name_works FROM a_stroy.words_object where id_Object = {rowIndex}"; // получение данных из combobox 
            column2.DataSource = Execute(query);
            column2.DisplayMember = "Name_works";
            column2.ValueMember = "id_Object";
            //if (box.SelectedValue == null)
            //{
            //    Debug.WriteLine("Ошибка!!!!!!!!!!!!!!!!!!!!!!!!!!!");
            //}
            //else
            //{

            //}
        }


К сообщению приложен файл. Размер - 46Kb
20 апр 21, 22:14    [22311677]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
xamelione25,

SelectedRow

https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.datagridview.selectedrows?view=netframework-4.8
21 апр 21, 23:06    [22312185]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Cat2, Да я это видел, я пытался и с этим SelectedRow что-то наварганить, но у меня ничего не получилось.

У меня сейчас основная проблема в том, что в выше выложенном коде мне не получается сделать вывод количества выбранных combobox-ов. Просто мне нужно на основе количества выбранных combobox-ов задать количество строк в других datagridview.

И еще у меня странность происходит с тем, что у меня при выборе (начиная со второго) combobox-а появляются пробелы, которых не должно быть! То есть у меня по каким-то причинам получается
box.SelectedValue == null


в дезингере дополнительно у меня прописано
            // 
            // dataGridView1
            // 
            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dataGridView1.Location = new System.Drawing.Point(335, 410);
            this.dataGridView1.Name = "dataGridView1";
            this.dataGridView1.RowHeadersVisible = false;
            this.dataGridView1.RowHeadersWidth = 82;
            this.dataGridView1.Size = new System.Drawing.Size(335, 181);
            this.dataGridView1.TabIndex = 15;
            this.dataGridView1.EditingControlShowing += new System.Windows.Forms.DataGridViewEditingControlShowingEventHandler(this.dataGridView1_EditingControlShowing);
21 апр 21, 23:24    [22312191]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
xamelione25,

Наконец понял, что Вы хотите :)

Вот так можно получить id выбранных пунктов

var idlist = dataGridView1.Rows.Cast<DataGridViewRow>().Select(r => r.Cells[0].Value).Distinct();


Так - выбранные значения в текстовом виде

var namelist = dataGridView1.Rows.Cast<DataGridViewRow>().Select(r => r.Cells[0].FormattedValue).Distinct();
25 апр 21, 12:42    [22313894]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Cat2, спасибо )))
Но все-равно у меня какая-та каша получается (см.скрин).
Я вообще ожидал что должно появляться что-то вроде такого:
К примеру:

При выборе первого объекта с id - 5:
5
1

При выборе одного объекта с id - 6:
5 6
2

При выборе третьего объекта с id - 7:
5 6 7
3

итд ...

Касаемо id-ишников: мне главное чтобы я смог данные о выбранных объектах сохранить в БД (то есть мне нужно завернуть это в параметр на который я смогу потом сослаться) для того чтобы я при редактировании/повторном открытии, смог задать системе какие пункты нужно отобразить - то есть сослаться на некоторый параметр.

Касаемо количества нужно чтобы я потом смог на основе этого значения, сославшись на него, задать количество строк в других datagridview. А оно у меня сейчас вообще по-моему на 1 меньше отображается чем на самом деле выбрано объектов.

Причем мне не понятно то что (я выделил на скрине): у меня при выборе объекта в combobox-e ... из-за того что, чтобы открыть его мне нужно сделать несколько щелчков - видимо из-за этого у меня куча лишних (непонятных зачем) значений вылетает.

Ну и последнее это то что мне пока не понятно как сделать чтобы у меня отфильтровывались уже выбранные объекты, для того чтобы я их повторно не мог выбрать.

К сообщению приложен файл. Размер - 140Kb
25 апр 21, 14:09    [22313914]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Cat2,

и не пойму ....

у меня что-то не то вылазит

К сообщению приложен файл. Размер - 140Kb


Сообщение было отредактировано: 25 апр 21, 14:39
25 апр 21, 14:46    [22313920]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Cat2,

К сообщению приложен файл. Размер - 116Kb
25 апр 21, 14:48    [22313921]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
xamelione25
Cat2,

Картинка с другого сайта.


Для такого вывода надо преобразовать коллекцию в массив или список.

var namelist = dataGridView1.Rows.Cast<DataGridViewRow>().Select(r => r.Cells[0].FormattedValue).Distinct().ToList<string>();


Хотя для целей отладки вполне достаточно было глянуть на содержание в точке останова.
25 апр 21, 16:11    [22313951]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
fkthat
Member

Откуда:
Сообщений: 4880
xamelione25
cbDgv.SelectedValueChanged -= new EventHandler(CbDgv_SelectedValueChanged);
cbDgv.SelectedValueChanged += new EventHandler(CbDgv_SelectedValueChanged);

Можно поинтересоваться - что это за жесть?
25 апр 21, 16:12    [22313952]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Cat2,

К сообщению приложен файл. Размер - 82Kb
25 апр 21, 16:30    [22313962]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
fkthat,

Если честно, правильно и точно затрудняюсь ответить ...

но насколько я помню, это для событие для очистки чего-то ненужного (временного) ... возможно ошибаюсь.
25 апр 21, 16:32    [22313963]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
xamelione25
Cat2,

Картинка с другого сайта.


<string> лишнее затесалось
var namelist = dataGridView1.Rows.Cast<DataGridViewRow>().Select(r => r.Cells[0].FormattedValue).Distinct().ToList();
26 апр 21, 09:25    [22314242]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
xamelione25
Member

Откуда: Белгород
Сообщений: 83
Cat2,

ну я в 5 посте написал ...

-----------------

у меня увы фактически все обозначенное тоже самое осталось(((

К сообщению приложен файл. Размер - 142Kb
26 апр 21, 09:51    [22314262]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
fkthat
Member

Откуда:
Сообщений: 4880
xamelione25,

Шрифты - огонь
26 апр 21, 11:14    [22314311]     Ответить | Цитировать Сообщить модератору
 Re: Как определить количество выбранных combobox-ов в datagridview  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22381
fkthat
Шрифты - огонь
главное, сразу многое говорит о стаже ТС ))
26 апр 21, 11:19    [22314318]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить