我在BoundField
GridView
<asp:BoundField DataField="ReportId" HeaderText="RId" Visible="false" />
但是当我尝试在该字段中获取文本时,它返回空。
protected void gvwReports_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "ViewSchedule")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gvwReports.Rows[index];
string s = row.Cells[0].Text;
}
}
但是,如果我将BoundField's
.Visible
属性更改为true
答案 0 :(得分:25)
使用客户端html隐藏
尝试这样的事情<style type="text/css">
.hidden
{
display:none;
}
</style>
<asp:BoundField DataField="ReportId" HeaderText="RId" HeaderStyle-CssClass="hidden" >
</asp:BoundField>
答案 1 :(得分:4)
虽然这是一年前的问题(事实上已经有一年了),但这是另一种不使用CssClass的解决方法。
在数据绑定之后,将所需列的可见性设置为false。
gridview1.databind()
gridview1.columns(i).Visibile = False
这将在viewstate中维护数据,但不会为页面创建标记。
答案 2 :(得分:2)
第一个解决方案正常工作,但必须添加 HeaderStyle 来隐藏此列的标题
<style type="text/css">
.hidden
{
display:none;
}
</style>
<asp:BoundField DataField="ReportId" HeaderText="RId" >
<ItemStyle CssClass="hidden"/>
<HeaderStyle CssClass="hidden"/>
</asp:BoundField>
答案 3 :(得分:0)
根据我的知识,当您使绑定字段不可见时,您无法访问它。尝试使用TemplateField
答案 4 :(得分:0)
我遇到了同样的问题。
有趣的是,DataGrid不会出现这个问题,它允许您从隐藏列访问数据,即使它甚至没有在客户端中呈现它们,因为它仍然会将隐藏列的信息添加到视图状态。
另一方面,即使将EnableViewState属性设置为true ,GridView也会忽略隐藏字段。唯一的方法是将信息保留在那里供客户隐藏样式属性,例如 display:none; 。
真的很不幸,我喜欢DataGrid上的行为,但GridView还有其他优点。
答案 5 :(得分:0)
似乎如果GridView列被标记为不可见,则它不会在运行时填充,因此它不返回任何内容。所以,我只是从绑定到Gridview的DataView填充了Hyperlink,记得将DataView声明为共享。
我在VB asp.net中为GridView找到了这个,它从日历数据库中找到了搜索事件。
这对我很有用!
Private Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If (e.Row.RowType = DataControlRowType.DataRow) Then
Dim ThisHyperLink As HyperLink = e.Row.Cells(0).Controls(0)
Dim drvRow As DataRowView = dvFoundEvents.Item(e.Row.DataItemIndex)
EventID = drvRow("EventID")
ThisHyperLink.NavigateUrl = "<URL>?id=" + EventID
End If
End Sub
答案 6 :(得分:0)
这对我有用:
如果列是网格上的命名DataKeyValue,则可以将从该行发送的e.Item转换为DataGridItem并调用其DataKeyValue。您需要将其转换为Int,String,但是即使列可见= false,它也会存在。
答案 7 :(得分:0)
在rowDataBound事件中,您可以使用以下内容访问字段的值:
(((DataRowView)e.Row.DataItem)["your_boundField_dataFieldName"]).ToString();
即使您的boundfield可见性设置为false。