2009-07-06 3 views
0

Я привязываю linq Query к datagridview для того, чтобы позволить пользователю вставлять/обновлять/удалять. Однако я хотел бы скрыть столбец идентификатора. но я бы предпочел не жестко кодироватьКак программно скрыть столбец linq-to-sql на datagridview?

datagridview.columns[id].visible=false 

В случае изменения имени столбца идентификатора. Я читал, что вы можете пройти через отражение, чтобы получить список столбцов во время выполнения, но я не могу это проверить во время разработки для имени столбца. Является ли это возможным?

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

ответ

2

Если вы используете Winforms, то вы должны иметь BindingSource на вашем Form, что набирается на ваш LINQ-to-SQL типа. Если вы это сделаете, вы получите полную поддержку дизайнеров для всех полей, доступных для этого класса.

Если вы выполняете большую работу по связыванию данных с объектами LINQ-to-SQL (или любыми другими классами, если на то пошло), я настоятельно рекомендую проверить на HyperDescriptor Марк Гравелл. Это значительно ускоряет производительность привязки данных пользовательского интерфейса, минуя повторяющиеся вызовы среды выполнения для классов.

+0

Источник привязки работает только в том случае, если я использую время проектирования databinding =/ В настоящее время нет такой вещи, как частичные свойства, поэтому я не могу добавить к этим столбцам атрибут [Browsable (false)]. – Maslow

+0

@Maslow: Ваш вопрос, казалось, указывал на то, что вы хотели что-то использовать во время разработки. Есть ли конкретная причина, по которой вы не хотите/не можете использовать привязку времени проектирования? В любом случае, нет способа сделать индексирующее (например, datagridview.columns) время компиляции безопасным, насколько передается значение, если это то, о чем вы просите. –

+0

@Adam: Я не занимаюсь связыванием времени разработки, потому что datagridview показывает разные типы объектов в зависимости от того, какой вид пользователя установлен. Возможно, это преждевременная оптимизация, и над головой выскакивать и разрабатывать разные времена разработки datagridviews неплохо. Да, похоже, что безопасность для времени компиляции для имен свойств не существует, это действительно не похоже на сложную функцию для добавления в компилятор. – Maslow

0

Не могли бы вы сделать это в html? Или вы используете ASP.NET?

<asp:BoundField DataField="id" Visible="false" /> 
+1

Я не думал, что данныеGridView как в Asp.Net Я думал, что это называется dataGrid? В любом случае я в winforms – Maslow

+0

Вправо. Он называется DataGrid или GridView в ASP.NET. DataGridView - это элемент управления WinForms. –

Смежные вопросы