0

我在我的gridview中做了不可见的第一列。:

<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,我可以获得价值。但是这个列必须是不可见的。

4

2 回答 2

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 行数据绑定事件上设置单元格不可见,删除 DataField="I_ID" 上的不可见属性。

protected void tableResults_RowDataBound(object sender, GridViewRowEventArgs e)
{
   e.Row.Cells[1].Visible = false;
}
于 2012-11-16T04:17:09.653 回答
0

一种简单的方法:

保持列可见

columnName.visible = true

但使用 HTML 使其不可见

style="visibility:hidden;"

或者

style="display:none;"

即喜欢

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

这样,您可以将其隐藏并访问其值。

于 2012-11-16T04:47:18.090 回答