我有一个GridView与DataSource
(SQL数据库)。我想隐藏一列,但仍然可以在选择记录时访问该值。有人可以告诉我如何做到这一点?如何隐藏列(GridView)但仍然可以访问它的值?
这是我想隐藏的列,仍然要访问它的值:
<asp:BoundField DataField="Outlook_ID" HeaderText="OutlookID" />
我用尽了一切办法隐藏的列(属性Visible="false"
),但我不能访问它的价值。
我有一个GridView与DataSource
(SQL数据库)。我想隐藏一列,但仍然可以在选择记录时访问该值。有人可以告诉我如何做到这一点?如何隐藏列(GridView)但仍然可以访问它的值?
这是我想隐藏的列,仍然要访问它的值:
<asp:BoundField DataField="Outlook_ID" HeaderText="OutlookID" />
我用尽了一切办法隐藏的列(属性Visible="false"
),但我不能访问它的价值。
如果我没有弄错,GridView
不包含BoundColumns
的值visible="false"
的值。你可以在这里做两件事,一件(如V4Vendetta的回答中解释的)使用Datakeys
。或者您可以将您的BoundColumn
更改为TemplateField
。并且在ItemTemplate
中,添加一个像Label
这样的控件,使其可见性为false,并为您的值Label
。
您可以使用DataKeys来检索这些字段的值,因为(如您所说)当您将普通BoundField
设置为可见false时,您无法获取其值。
在.aspx
文件中设置的GridView
属性现在
DataKeyNames = "Outlook_ID"
,在事件处理程序,您可以访问该键的值,像这样:
grid.DataKeys[rowIndex]["Outlook_ID"]
这会给你的ID网格的指定rowindex。
DataKeys其中用于那些 – 2016-11-01 13:09:45
这将如何工作,如果你使用DataSource控件与在HTML代码CRUD ...? – 2017-05-06 07:59:54
如果在GridView
的列中有一个TemplateField
,并且您有一个名为blah的控件绑定到它。然后把outlook_id
作为HiddenField
有这样的:
<asp:TemplateField HeaderText="OutlookID">
<ItemTemplate>
<asp:Label ID="blah" runat="server">Existing Control</asp:Label>
<asp:HiddenField ID="HiddenOutlookID" runat="server" Value='<%#Eval("Outlook_ID") %>'/>
</ItemTemplate>
</asp:TemplateField>
现在,抢事件的行你想要的outlook_id
然后访问控制。
对于RowDataBound
访问它想:
string outlookid = ((HiddenField)e.Row.FindControl("HiddenOutlookID")).Value;
做得到回来,如果你有麻烦访问点击一行。不要忘记提及您想要访问的事件。
在填写GridView
之前留下可见的列。填入GridView
,然后隐藏列。
可以通过编程方式做到这一点:
grid0.Columns[0].Visible = true;
grid0.DataSource = dt;
grid0.DataBind();
grid0.Columns[0].Visible = false;
这样您绑定之前列设置为可见,从而产生列。 您将列设置为不可见,因此不显示。
您可以在服务器端创建列hidden
,出于某种原因,这与执行aspx
代码不同。它仍然可以被引用,就好像它是可见的。只需将此代码添加到您的OnDataBound
事件中即可。
protected void gvSearchResults_DataBound(object sender, EventArgs e)
{
GridView gridView = (GridView)sender;
if (gridView.HeaderRow != null && gridView.HeaderRow.Cells.Count > 0)
{
gridView.HeaderRow.Cells[UserIdColumnIndex].Visible = false;
}
foreach (GridViewRow row in gvSearchResults.Rows)
{
row.Cells[UserIdColumnIndex].Visible = false;
}
}
这工作。对于每个看起来需要确保标题列和网格视图列都隐藏的人。 – Danrex 2016-06-01 03:12:51
<head runat="server">
<title>Accessing GridView Hidden Column value </title>
<style type="text/css">
.hiddencol
{
display: none;
}
</style>
<asp:BoundField HeaderText="Email ID" DataField="EmailId" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" >
</asp:BoundField>
ArrayList EmailList = new ArrayList();
foreach (GridViewRow itemrow in gvEmployeeDetails.Rows)
{
EmailList.Add(itemrow.Cells[YourIndex].Text);
}
有关此解决方案的深入说明,请参见http://www.netomatix.com/development/GridViewHideColumn.aspx。 – Marcel 2012-09-03 08:05:34
该解决方案还具有额外的优势,即数据仍可在客户端的JavaScript中访问。应该是这个问题的首选解决方案! – 2016-11-11 06:16:11
我采用类似于user496892的方法:
SPBoundField hiddenField = new SPBoundField();
hiddenField.HeaderText = "Header";
hiddenField.DataField = "DataFieldName";
grid.Columns.Add(hiddenField);
grid.DataSource = myDataSource;
grid.DataBind();
hiddenField.Visible = false;
定义风格在CSS:
.hiddencol { display: none; }
的ItemStyle-CssClass="hiddencol"
和HeaderStyle-CssClass="hiddencol"
属性然后添加到网格字段:
<asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" ClientIDMode="Static" />
这是一个更有效的答案 – ImCrimson 2017-04-17 14:53:22
我有一个新的解决方案隐藏使用CSS或的javascript或的jquery客户端的列。
.col0
{
display: none;
}
并设置gvClientDetails.Columns[0].Visible = true;
,如果设置为false
。
以下是如何获取设置为Visible=False
的GridView
中隐藏列的值:将数据字段SpecialInstructions
添加到绑定的GridView的DataKeyNames属性,并以此方式访问它。
txtSpcInst.Text = GridView2.DataKeys(GridView2.SelectedIndex).Values("SpecialInstructions")
就是这样,它每次都很简单。
你可以在后面执行代码。
Set visible= false
数据绑定后的列。 之后,你可以再次做可见性“true”在row_selection函数从网格视图。它会工作!
当我想在GridView
出现之前从GridView
访问某个值。
BoundField
和绑定DataField
正常。RowDataBound
事件中,我在那个事件中做了一些处理。GridView
之前出现我这样写:
protected void GridviewLecturer_PreRender(object sender, EventArgs e)
{
GridviewLecturer.Columns[0].Visible = false;
}
这隐藏了列但它不隐藏列标题。你会怎么做? – Apollo 2013-07-29 16:28:37