Tas*_*sto 71 c# asp.net gridview hide
我有一个带有DataSource
(SQL数据库)的GridView .我想隐藏一列,但是当我选择记录时仍然可以访问该值.有人能告诉我怎么做吗?
这是我要隐藏的列,但仍想访问其值:
<asp:BoundField DataField="Outlook_ID" HeaderText="OutlookID" />
Run Code Online (Sandbox Code Playgroud)
我尝试了一切来隐藏列(属性Visible="false"
),但我无法访问它的值.
小智 83
<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);
}
Run Code Online (Sandbox Code Playgroud)
fut*_*ile 44
如果我没有弄错,GridView
不保持BoundColumns
具有该属性的值visible="false"
.你可以在这里做两件事,一件(如V4Vendetta的答案中所解释的)要使用Datakeys
.或者你可以改变你BoundColumn
的TemplateField
.在其中ItemTemplate
,添加一个控件Label
,使其可见性为false,并为此赋予您的价值Label
.
Nil*_*far 39
在css中定义样式:
.hiddencol { display: none; }
Run Code Online (Sandbox Code Playgroud)
然后将the ItemStyle-CssClass="hiddencol"
和HeaderStyle-CssClass="hiddencol"
属性添加到网格字段:
<asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" ClientIDMode="Static" />
Run Code Online (Sandbox Code Playgroud)
V4V*_*tta 34
您可以使用DataKeys来检索此类字段的值,因为(正如您所说)当您将法线设置BoundField
为可见false时,您无法获取其值.
在.aspx
文件中设置GridView
属性
DataKeyNames = "Outlook_ID"
Run Code Online (Sandbox Code Playgroud)
现在,在事件处理程序中,您可以像这样访问此键的值:
grid.DataKeys[rowIndex]["Outlook_ID"]
Run Code Online (Sandbox Code Playgroud)
这将为您提供网格指定rowindex的id.
小智 20
你可以通过编程方式完成:
grid0.Columns[0].Visible = true;
grid0.DataSource = dt;
grid0.DataBind();
grid0.Columns[0].Visible = false;
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以在数据绑定之前将列设置为可见,以便生成列.您将列设置为不可见,因此不会显示.
nav*_*een 11
如果你确实在你TemplateField
的列中有一个内部,那么你就拥有一个GridView
名为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>
Run Code Online (Sandbox Code Playgroud)
现在,在您想要的事件中获取行outlook_id
,然后访问该控件.
对于RowDataBound
访问它像:
string outlookid = ((HiddenField)e.Row.FindControl("HiddenOutlookID")).Value;
Run Code Online (Sandbox Code Playgroud)
如果您在访问点击的行时遇到问题,请回来.并且不要忘记提及您想要访问的事件.
小智 8
您可以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;
}
}
Run Code Online (Sandbox Code Playgroud)