如何以编程方式隐藏datagridview上的linq to sql列?

如何以编程方式隐藏datagridview上的linq to sql列?,linq,linq-to-sql,data-binding,.net-3.5,Linq,Linq To Sql,Data Binding,.net 3.5,我将linq查询绑定到datagridview,以允许用户插入/更新/删除。但是我想隐藏Id列。但我不想硬编码 datagridview.columns[id].visible=false 如果id列名发生更改。我已经读到,您可以遍历反射以获得运行时的列列表,但我不能在设计时检查列名。可能吗 如果我将查询更改为不包含ID,那么我将硬编码列列表而不是ID列名,因此如果添加了列,我将不得不手动更新那里。您不能在html中执行吗?或者您正在使用ASP.NET <asp:BoundField D

我将linq查询绑定到datagridview,以允许用户插入/更新/删除。但是我想隐藏Id列。但我不想硬编码

datagridview.columns[id].visible=false
如果id列名发生更改。我已经读到,您可以遍历反射以获得运行时的列列表,但我不能在设计时检查列名。可能吗


如果我将查询更改为不包含ID,那么我将硬编码列列表而不是ID列名,因此如果添加了列,我将不得不手动更新那里。

您不能在html中执行吗?或者您正在使用ASP.NET

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

如果您使用的是Winforms,那么您的
表单上应该有一个
BindingSource
,它是按LINQ to SQL类型键入的。如果您这样做,那么您将获得该类上所有可用字段的完全设计器支持


如果您正在使用LINQ到SQL实体(或任何其他类)进行大量数据绑定工作,我强烈建议您检查Mark Gravell。通过绕过类上属性的重复运行时调用,它大大加快了UI数据绑定性能。

我不认为dataGridView与Asp.Net中的dataGrid一样,我以为它在那里被称为dataGrid?不管怎样,我都在winformsRight。它在ASP.NET中称为DataGrid或GridView。DataGridView是一个WinForms控件。只有当我使用设计时数据绑定=/当前没有部分属性这样的东西,所以我不能向这些列添加[Browsable(false)]属性。@Maslow:你的问题似乎表明你想在设计时使用某些东西。您不想/不能使用设计时绑定有什么特殊原因吗?在任何情况下,都没有办法使索引器(如datagridview.columns)的编译时安全,只要传递给它的值是安全的(如果这是您所要求的)。@Adam:我没有进行设计时绑定,因为datagridview根据用户设置的视图显示不同的对象类型。也许这是过早的优化,在不同的设计时弹出和弹出DataGridView也不错。是的,属性名的编译时安全性似乎不存在,添加到编译器中似乎并不困难。@Maslow:您要做的是让编译器弄清楚(或以某种方式向编译器指示)您所拥有的字符串实际上代表属性名。好的,现在它必须弄清楚它们应该对应什么类型(在您的场景中可能很简单,但在其他场景中可能很难或不可能)。这只允许属性名。对于实现自己的类型描述符(如DataView)的对象呢?这些属性直到运行时才真正创建,那么编译器如何检测这些属性呢?