这是我做的一个模板列,隐藏的.
<asp:TemplateColumn Visible="False" SortExpression="scoreID" HeaderText="成绩编号">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:Label id="Label26" Width="50" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "scoreID") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="edit_scoreID" Width="50" Runat="server" CssClass="input" Text='<%# DataBinder.Eval(Container.DataItem, "scoreID") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>

解决方案 »

  1.   

    可以取到的,string value=datagrid1.items[i].cells[5].text
    其中第5列是隐藏列,注意.net是从0开始的。
      

  2.   

    如果这个列没有编辑的必要,那么不如去掉它的<EditItemTemplate>,然后在读取值的代码中这样处理:
       strRt = CType(e.Item.Cells(e.Item.Cells.Count - 1).Controls(1), Label).Text  我在这里建议你把隐藏的,要取值的列放在最后,这样就有很大的灵活性.strRt就是你要的值了.这里只是提供了一种方式,你类似的可以做很多的变换处理.
      不过哦,这里如果是有<EditItemTemplate>,你简单的替换掉其中的Label ,用TextBox可是不行的哦!
      

  3.   

    Session["select_word_id"] =e.Item.Cells[9].Text;
    这是我象session中传第九列的值,它是隐藏列
      

  4.   

    在这里label和textbox其实是一样的,既然已经看不到了,就没什么。
    只是开始写的时候是需要修改的,后来也就没改回来.
      

  5.   

    可以,
    for(int i=0;i<grid1.items.count;i++)
    {
        for(int j=0;j<grid1.columns.count;j++)
    {
        if(grid1.item[i].cells[j].text!=="")
    {
           ss=grid1.item[i].cells[j].text;
    }
    }
    }