试了好几种方法,总算成功了。
(1)在GridView的标签处设置OnRowCreated="GridView1_RowCreated" ;
(2)在RowCreated事件中书写如下代码
============================================================================
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{ //根据所需条件判断是否可视
e.Row.Cells[0].Visible = false; //如果想使第1列不可见,则将它的可见性设为false
}
试了其他方法,都不顺利,细节处讲得不明白或是提示错误(比如:莫名其妙出现【不包含“GridView1”的定义】),记录下供以后参考。
方法1:
autogeneratecolumns属性---表示列的自定义产生
在cs文件中多加一行代码,其思路如下: (1)设置一个css类: <style> .hidden{display:none;} </style> (2)随后在GridView的列编辑对话框中,对需要进行隐藏的列进行设置,分别设置FootStyle,HeaderStyle,ItemStyle的CssClass属性为“hidden” Ok,这样我们就实现了隐藏列的目的,同时又能保证对其进行数据绑定。
隐藏列的值 在RowCreated事件中书写如下代码 void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { e.Row.Cells[0].Visible = true; //如果想使第1列不可见,则将它的可见性设为false //可以根据需要设置更多的列 } 因为在RowCreated事件(隐藏)在绑定时候发生,所以这样就即能将数据绑定到列上,又隐藏了该列.所 以可以访问到隐藏列的值 dt.Columns[0].ColumnMapping = MappingType.Hidden; //隐藏 --------为gridview控件里的“删除”列添加一个确认对话框---------------------- 在删除按钮的那一列属性里面,把DeleteText属性设为 可以时img标签
<div id="de" οnclick="JavaScript:return confirm('确定删除吗?')">删除</div>
方法2
Public void myTestFunction()
{
string conString="....";//省略
string sqlquery="...";//省略
SqlConnection con = new SqlConnection(conString);
SqlDataAdapter da = new SqlDataAdapter(sqlquery, con);
DataSet ds = new DataSet();
da.Fill(ds);
ds.Tables[0].Columns[0].ColumnMapping = MappingType.Hidden;
GridView1.DataSouce = ds.Tables[0];
GridView1.DataBind() ;
}
方法3:
一开始解决这个问题的时候,查了google,发现都不是我想要的,在 GridViewColumn中,它有个属性Width,如果设置为0,就没有显示出来,其实这个是虚假的,你可以把它再界面上拉长,因此不是我想要的。
GridView.Columns[columns].Visible = false;但是GridViewColumn.Columns[columns]是没有Visible属性的,因此这个方法对我来说也是不行的。于是我就想到了用x:Name的方法,这样来做,
<GridView x:Name="gvGroups">
<GridViewColumn x:Name="hideitem" />
</GridView>
在代码里面用gvGroups.Columns.Remove(hideitem);把它去掉,就不显示了,
如果想显示的话,直接gvGroups.Columns.Add(hideitem);不过是把它放在最后的一列去了。
这样算是解决了隐藏列的问题。
方法4:
protected void Page_Load(object sender, EventArgs e)
{
//这里可以根据自己的判断来隐藏某列
this.GridView1.Columns[0].Visible = false; //把第一列隐藏
}
这个方法尝试了,很奇怪,出现以下问题:“_Default”不包含“GridView1”的定义,并且找不到可接受类型为“_Default”的第一个参数的扩展方法“GridView1”(是否缺少 using 指令或程序集引用?)。明明在aspx文件里已经定义过。