C# 隐藏Gridview列但获取值

C# 隐藏Gridview列但获取值,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个GridView,我将其数据绑定到页面\ u Load()。我想隐藏其中的一个列,但我仍想访问它。我试过了 SqlCommand sqlCommand = new SqlCommand("select name,surname,id from test", sqlConnection); sqlConnection.Open(); SqlDataReader reader = sqlCommand.ExecuteReader();

我有一个GridView,我将其数据绑定到页面\ u Load()。我想隐藏其中的一个列,但我仍想访问它。我试过了

       SqlCommand sqlCommand = new SqlCommand("select name,surname,id from test", sqlConnection);
        sqlConnection.Open();
        SqlDataReader reader = sqlCommand.ExecuteReader();         
        GridView1.DataSource = reader;          
        GridView1.DataBind();
GridView1.columns[1].visible= False;
我发现错误指数超出了范围。必须为非负数且小于集合的大小。
有什么想法吗

为此使用数据键

<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" ...>
   <Columns>
       <asp:BoundField HeaderText="Name" DataField="Name" />
       <asp:BoundField HeaderText="Surname" DataField="Surname" />
   </Columns>
</asp:GridView>

是否选中此项::“。将字段名添加到数据绑定控件的DataKeyNames属性”

是否尝试将列宽设置为0?如果在设置可见性时收到错误消息,则可能是因为数据源没有3个字段。请记住,它是从索引0开始的。您可能希望显示更多的代码,特别是在何处以及如何对控件进行数据绑定。您看到的错误几乎肯定表明GridViewTest.columns中有零个或一个元素,此时您正试图访问第二个元素。当您只需要访问数据时,不应该操作列。这就是数据键的作用。@Mikemane检查我的代码,但是在代码的第二行我得到了以下错误:只有赋值、调用、递增、递减和新对象表达式可以用作statement@pikk:参见编辑后的答案。很抱歉,我忘了将列值指定给变量。是的,但这如何能帮助我隐藏列但仍能访问其值?这将消除隐藏列的需要,因为您将能够通过数据键访问列值。主啊。。。您仍在从select返回列。唯一的区别是将值保存在数据键中,而不是将其隐藏在列中。该值将更容易通过这种方式访问。这就是数据键的用途,我建议您对它们进行一些研究,以便更好地理解它。
 //returns the id at the first row
 int ID = GridView1.DataKeys[0]["ID"] as int;