JC Carmo Ответов: 1

C# - как сделать три каскадных comboxes в datagridview?


Я начинающий программист, разрабатывающий решение c# WinForms / SQL в VS 2015 Professional.

Кто-нибудь знает какие-нибудь хорошие учебники о том, как создавать каскадные комбо-боксы внутри datagridview? Я много гуглил, но ничего из того, что я пробовал, до сих пор не сработало... Это так расстраивает!

Спасибо. Я очень ценю ваше время и помощь.

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Bremington
{
    public partial class Alunos : Form
    {
        public Alunos()
        {
            InitializeComponent();
        }

        BindingSource filteredModulosBS = new BindingSource();
        BindingSource filteredTurmasBS = new BindingSource();


        private void Alunos_Load(object sender, EventArgs e)
        {
            this.alunosTableAdapter.Fill(this.bremingtonBackEndDataSet.alunos);
            this.alunos_detTableAdapter.Fill(this.bremingtonBackEndDataSet.alunos_det);
            this.cursosTableAdapter.Fill(this.bremingtonBackEndDataSet.cursos);
            this.modulosTableAdapter.Fill(this.bremingtonBackEndDataSet.modulos);
            this.turmasTableAdapter.Fill(this.bremingtonBackEndDataSet.turmas);

            DataView dvM = new DataView(bremingtonBackEndDataSet.Tables["modulos"]);
            filteredModulosBS.DataSource = dvM;

            DataView dvT = new DataView(bremingtonBackEndDataSet.Tables["turmas"]);
            filteredTurmasBS.DataSource = dvT;
        }

        private void alunos_detDataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            if (e.ColumnIndex == ComboBoxColumnModulo.Index)
            {
                DataGridViewComboBoxCell dgcbm = (DataGridViewComboBoxCell)alunos_detDataGridView[e.ColumnIndex, e.RowIndex];
                dgcbm.DataSource = filteredModulosBS;
                this.filteredModulosBS.Filter = "cod_curso='" + this.alunos_detDataGridView[e.ColumnIndex - 1, e.RowIndex].Value.ToString() + "'";
            }

             if (e.ColumnIndex == ComboBoxColumnTurma.Index)
             {
                DataGridViewComboBoxCell dgcbt = (DataGridViewComboBoxCell)alunos_detDataGridView[e.ColumnIndex, e.RowIndex];
                dgcbt.DataSource = filteredTurmasBS;
                this.filteredTurmasBS.Filter = "cod_modulo='" + this.alunos_detDataGridView[e.ColumnIndex - 1, e.RowIndex].Value.ToString() + "'";
            }
        }

        private void alunos_detDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == this.ComboBoxColumnModulo.Index)
            {
                DataGridViewComboBoxCell dgcbm = (DataGridViewComboBoxCell)alunos_detDataGridView[e.ColumnIndex, e.RowIndex];
                dgcbm.DataSource = modulosBindingSource;
                this.filteredModulosBS.RemoveFilter();
            }

            if (e.ColumnIndex == this.ComboBoxColumnTurma.Index)
            {
                DataGridViewComboBoxCell dgcbt = (DataGridViewComboBoxCell)alunos_detDataGridView[e.ColumnIndex, e.RowIndex];
                dgcbt.DataSource = turmasBindingSource;
                this.filteredTurmasBS.RemoveFilter();
            }
        }
    }
}

1 Ответов

Рейтинг:
2

Suvendu Shekhar Giri

Не уверен, что именно вы ищете, но поиск в google дал мне так много результатов для статей/блогов/сообщений на форуме, имеющих отношение к вашему запросу. Проверьте следующее, если они помогают-
c# - как реализовать каскадные комбо-боксы в элементе управления DataGridView? - переполнение стека[^]
http://demos.devexpress.com/ASPxgridviewDemos/GridEditing/CascadingComboBoxes.aspx[^]
Каскадный ComboBox В Приложении Windows С Использованием C#[^]

Если я смотрю на вещи в другом направлении, чем вы хотели, пожалуйста, просветите меня.

Спасибо :)


JC Carmo

Привет, Сувену. Спасибо за ваш ответ. Я также нашел много результатов, но, как и ваши, они не касаются каскадных комбинаций в DataGridView и C#.