none
Колонки DataGridView RRS feed

  • Вопрос

  • Подскажите, пожалуйста, как можно при генерации колонок, оставить видимой только одну определенную, не скрывая по отдельности все остальные?

    Спасибо.

    6 апреля 2012 г. 8:50

Ответы

  • > А приходиться скрывать как: dataGridView1.Columns[0].Visible = false; [...] dataGridView1.Columns[11].Visible = false;

     
    если надо скрыть с 0 по 11, то так:

    for(int i=0; i <= 11; i++)
       dataGridView1.Columns[i].Visible = false;


    • Изменено Malobukv 6 апреля 2012 г. 20:35
    • Помечено в качестве ответа Abolmasov Dmitry 9 апреля 2012 г. 10:23
    6 апреля 2012 г. 20:35

Все ответы

  • Здравствуйте.

    А чем именно не устраивает скрытие столбцов? Можете изменить сам запрос в источнике данных, чтобы он выбирал только нужный столбец, тогда остальные и не нужно будет скрывать. Можете выключить автогенерацию столбцов и кодом добавить только нужны столбцы в дата грид. Также, если у вас идет привязка данных своего бизнес объекта (не DataTable), то у соответсвующих свойств объекта можно задать атрибуты, чтобы на них не происходила генерация столбцов. Для DataTable можно изменить ColumnMapping, установив его в MappingType.Hidden тогда столбец тоже не будет отображаться.

    Как видите есть несколько путей решения проблемы, выбирайте более подходящий.


    Для связи [mail]

    • Предложено в качестве ответа YatajgaModerator 6 апреля 2012 г. 14:43
    6 апреля 2012 г. 9:11
  • Столбцов получается достаточно большое количество, поэтому скрывать каждый мне кажется не совсем разумным.

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

    Использую DataTable.


    Сам же запрос: string sql = "SELECT * FROM Table1";

    Вывожу как: 

       dataAdapter.Fill(dataTable);
       dataGridView1.DataSource = dataTable;

    А приходиться скрывать как:

        dataGridView1.Columns[0].Visible = false;
                dataGridView1.Columns[1].Visible = false;
                dataGridView1.Columns[3].Visible = false;
                dataGridView1.Columns[4].Visible = false;
                dataGridView1.Columns[5].Visible = false;
                dataGridView1.Columns[6].Visible = false;
                dataGridView1.Columns[7].Visible = false;
                dataGridView1.Columns[8].Visible = false;
                dataGridView1.Columns[9].Visible = false;
                dataGridView1.Columns[10].Visible = false;
                dataGridView1.Columns[11].Visible = false;

    6 апреля 2012 г. 19:55
  • А Вы выбирайте из базы только ключевой(ключевые) столбец и только те что нужны.
    6 апреля 2012 г. 20:09
    Модератор
  • > А приходиться скрывать как: dataGridView1.Columns[0].Visible = false; [...] dataGridView1.Columns[11].Visible = false;

     
    если надо скрыть с 0 по 11, то так:

    for(int i=0; i <= 11; i++)
       dataGridView1.Columns[i].Visible = false;


    • Изменено Malobukv 6 апреля 2012 г. 20:35
    • Помечено в качестве ответа Abolmasov Dmitry 9 апреля 2012 г. 10:23
    6 апреля 2012 г. 20:35
  • Используйте цикл для упрощения однотипной работы, как сказал Malobukv.


    Для связи [mail]

    9 апреля 2012 г. 10:23