2012-11-16 41 views
0

我做了無形的第一列在我的GridView:我怎麼可以從GridView中的不可見單元格ID?

<asp:GridView ID="tableResults" runat="server" DataMember="Table" 
    EnableModelValidation="True" CssClass = "GridViewStyle" 
    AutoGenerateColumns="False" OnRowDataBound = "tableResults_DataBound" 
    OnRowDeleting = "tableResults_RowDeleting" AutoGenerateDeleteButton="True">      
    <HeaderStyle CssClass = "GridViewHeaderStyle" /> 
    <RowStyle CssClass = "GridViewRowStyle"/>  
    <Columns>     
    <asp:BoundField DataField="I_ID" Visible="false" HeaderText=""/> 
    <asp:BoundField DataField="I_MAJOR" HeaderText="Major"/> 
    <asp:BoundField DataField="I_MINOR" HeaderText="Minor"/> 
    <asp:BoundField DataField="I_RELEASE" HeaderText="Release"/> 
    <asp:BoundField DataField="I_BUILD" HeaderText="Build"/> 
    </Columns>   
</asp:GridView> 

現在,當我得到第1欄是空值:

TableCell rowData = tableResults.Rows[e.RowIndex].Cells[1]; 
oracleCom.CommandText = "Delete From TBL_VERSIONS Where i_id = " + rowData.Text; 

如果我沒有列visible = true,我能得到的價值。但是這個專欄必須是不可見的。

回答

1

集的DataKeyNames作爲I_ID

<asp:GridView ID="tableResults" runat="server" DataMember="Table" 
    EnableModelValidation="True" CssClass = "GridViewStyle" 
    AutoGenerateColumns="False" OnRowDataBound = "tableResults_DataBound" 
    OnRowDeleting = "tableResults_RowDeleting" AutoGenerateDeleteButton="True" 
    DataKeyNames = "I_ID" > 

那麼你可以得到的ID如下

int idVal= (int)tableResults.DataKeys[e.RowIndex].Value; 

,或者您可以設置單元格上綁定事件的GridView行數據無形,消除對數據字段=無形財產「I_ID」。

protected void tableResults_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.Cells[1].Visible = false; 
} 
0

一個簡單的方法:

保持在柱上可見

columnName.visible = true 

但要與HTML無形

style="visibility:hidden;" 

OR

style="display:none;" 

即像

<asp:BoundField DataField="I_ID" Visible="false" style="visibility:hidden;" HeaderText=""/> 

這樣就可以掩蓋它,也可以訪問它的價值。