我试图通过匹配他们的HeaderText来隐藏运行时的一些gridView列,但它不适用于我。这是我正在尝试的代码
protected void gridview_rowDataBound(object sender, GridViewRowEventArgs e)
{
foreach (DataControlField col in gvRecoed.Columns)
{
try
{
if (col.HeaderText == cat_check.SelectedItem.Text.Trim())
{
col.Visible = false;
}
}
catch (Exception exe)
{ }
}
}
cat_check是一个CheckBoxList
答案 0 :(得分:2)
为什么要隐藏RowDataBound
中为网格中的每一行触发的列?
相反,您可以使用在网格数据绑定后调用一次的DataBound
事件。
protected void gridview_DataBound(object sender, EventArgs e)
{
if(cat_check.SelectedItem != null)
{
string columnName = SelectedItem.Text;
var column = gridView1.Columns.Cast<DataControlField>()
.FirstOrDefault(c => c.HeaderText == columnName);
if (column != null) column.Visible = false;
}
}
答案 1 :(得分:1)
protected void gridview_rowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (DataControlField col in gvSource.Columns)
{
try
{
if (col.HeaderText == cat_check.SelectedItem.Text.Trim())
{
col.Visible = false;
}
}
catch (Exception exe)
{ }
}
}
}
答案 2 :(得分:0)
这是一个简单的答案。 创建css如下
.classHide {
显示:无
}
然后只需将classHide cssclass分配给列,而不是col.hide。
例如col.cssclass = “classHide”