none
Контроль пользователем видимости столбцов базы в DataGridView RRS feed

  • Вопрос

  • VS-2010, Basic, WinForm, база access

    Уважаемые коллеги! Подскажите пожалуйста, как реализовать возможность контроля через форму, какие столбцы базы отображать в DataGridView, а какие нет? Можно с перезагрузкой программы. Т.е. чтобы сам пользователь мог регулировать этот процесс. Буду благодарен за любую помощь, очень надо!
    25 августа 2014 г. 20:14

Ответы

  • Рабочий  вариант решения:
    Public Sub EditColumnVisible()
      Try
        g = m_DS.Tables("tabColumnVisible").Columns.Count - 1
           For Me.g = 1 To g
               nameColumnVisible = m_DS.Tables("tabColumnVisible").Rows(0).Item(g).ToString
             If nameColumnVisible <> Nothing Then
               Select Case m_DS.Tables("пациенты").Columns(nameColumnVisible).ToString
                 Case "i"
                     dgv1.Columns("i").Visible = True
                 Case "ff"
                    dgv1.Columns("ff").Visible = True
                 ....
                        End Select
                    End If
                Next
      Catch ex As Exception
          MsgBox(ex.Message)
      End Try


    • Помечено в качестве ответа Igor Galyaev 27 августа 2014 г. 18:16
    27 августа 2014 г. 18:16

Все ответы

  • Добрый день.

    Объектная модель позволяет менять видимость столбцов. Вот здесь, посмотрите. Соответственно, после загрузки проверяете права пользователя и скрываете те столбцы, которые пользователю не нужны (или, что лучше, показываете те, которые нужны, а по умолчанию все столбцы скрыты).

    26 августа 2014 г. 6:51
    Отвечающий
  • скрыть или отобразить один или группу столбцов заранее известных несложно, например:

     dgv1.Columns("i").Visible = False
     dgv1.Columns("ff").Visible = True
     dgv1.Columns("pol").Visible = False

    по сути это и предлагают в примерах по ссылке.

    А можете привести пример как это сделать для группы столбцов или всех столбцов?

    Я пытаюсь решить свою задачу примерно так:

    1. При загрузке формы отображаются определенные столбцы по умолчанию

    2. Пользователь при желании изменить эти столбцы через меню открывает форму с CheckedListBox (куда подгружаются все существующие столбцы) и отмечает интересующие его столбцы. При сохранении выбора, названия столбцов сохраняются в отдельную таблицу tabColumnVisible, чтобы было откуда брать информацию о выбранных столбцах после перезапуска программы

    3. При очередном запуске программа по идее должна как-то использовать эти данные для определения, какие столбцы отобразить (уже после привязки основной таблицы 'pacient' к DataGrigView), типа

    Public Sub EditColumnVisible() Try g = m_DS.Tables("tabColumnVisible").Columns.Count - 1 For Me.g = 1 To g nameColumnVisible = m_DS.Tables("tabColumnVisible").Rows(0).Item(g).ToString If nameColumnVisible <> Nothing Then

    ??? dgv1.Columns(nameColumnVisible).Visible = False

    ??? End If Next Catch ex As Exception MsgBox(ex.Message) End Try End Sub

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


    • Изменено Igor Galyaev 26 августа 2014 г. 19:18
    26 августа 2014 г. 19:17
  • Рабочий  вариант решения:
    Public Sub EditColumnVisible()
      Try
        g = m_DS.Tables("tabColumnVisible").Columns.Count - 1
           For Me.g = 1 To g
               nameColumnVisible = m_DS.Tables("tabColumnVisible").Rows(0).Item(g).ToString
             If nameColumnVisible <> Nothing Then
               Select Case m_DS.Tables("пациенты").Columns(nameColumnVisible).ToString
                 Case "i"
                     dgv1.Columns("i").Visible = True
                 Case "ff"
                    dgv1.Columns("ff").Visible = True
                 ....
                        End Select
                    End If
                Next
      Catch ex As Exception
          MsgBox(ex.Message)
      End Try


    • Помечено в качестве ответа Igor Galyaev 27 августа 2014 г. 18:16
    27 августа 2014 г. 18:16