Выбор выводимых колонок в DataGridView

столкнулся с проблемой по выводу в датагрид только отдельные колонки, то есть задача такая, есть таблица, нужно вывести в датагрид только то столбц, которые нужны пользователю, в качестве выборки использовать checkbox....помогите плиз
5 ответов

mello7, скрывайте просто столбцы, если чекбокс не выбран:
dataGridView1.Columns["Имя столбца"].Visible = false;
mello7, или так:
public partial class Form1 : Form
    {
        public OleDbConnection conn;
        public OleDbCommand comm;
        public OleDbDataAdapter da;
        public OleDbCommandBuilder cb;
        public DataTable dt;
        public string CommandString = "SELECT * FROM Сотрудники";
public void ConnectToBase()
        {
            conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + @"\base.accdb");
            conn.Open();
            comm = new OleDbCommand(CommandString, conn);
            da = new OleDbDataAdapter(comm);
            cb = new OleDbCommandBuilder(da);
            dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            dataGridView1.Columns["key"].Visible = false;
            dataGridView1.Columns["Имя_сотрудника"].HeaderText = "Имя сотрудника";
        }
private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                CommandString = "SELECT * FROM Сотрудники";
                comm = new OleDbCommand(CommandString, conn);
                da = new OleDbDataAdapter(comm);
                cb = new OleDbCommandBuilder(da);
                dt = new DataTable();
                da.Fill(dt);
                dataGridView1.DataSource = dt;
                dataGridView1.Columns["key"].Visible = false;
                dataGridView1.Columns["Имя_сотрудника"].HeaderText = "Имя сотрудника";
 
                return;
            }
 
            CommandString = "SELECT [key], [Имя_сотрудника] FROM Сотрудники";
            comm = new OleDbCommand(CommandString, conn);
            da = new OleDbDataAdapter(comm);
            cb = new OleDbCommandBuilder(da);
            dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;
            dataGridView1.Columns["key"].Visible = false;
            dataGridView1.Columns["Имя_сотрудника"].HeaderText = "Имя сотрудника";
 
            return;
        }
Если чекбоксов много, то лучше реализовать один метод, иначе код получится большой.


чето не то, пишет ошибку(((( не получается скрыть столбец


mello7, опишите ошибку.


DataView
DataTable orders = dataSet.Tables["SalesOrderHeader"];
 
EnumerableRowCollection<DataRow> query =
    from order in orders.AsEnumerable()
   
    select new {order.Name};
 
DataView view = query.AsDataView();
 
bindingSource1.DataSource = view;
в данном случае столбец Name


спасибо за всё))) разобрался, оказывается надо было просто было указать номер столбца а не его название)))