[英]Hiding empty columns in Gridview using DataBound event
我正在使用以下方法在Gridview中使用DataBound事件隐藏空列。 它适用于BoundField列,但即使存在数据,也会隐藏其他类型,例如TemplateFields和HyperLinkFields。
protected void MyTable_DataBound(object sender, EventArgs e)
{
Boolean hasData = false;
for (int col = 0; col < MyTable.HeaderRow.Cells.Count; col++)
{
for (int row = 0; row < MyTable.Rows.Count; row++)
{
if(!String.IsNullOrEmpty(MyTable.Rows[row].Cells[col].Text)
&& !String.IsNullOrEmpty(HttpUtility.HtmlDecode(MyTable.Rows[row].Cells[col].Text).Trim()))
{
hasData = true;
break;
}
}
if (!hasData)
{
MyTable.HeaderRow.Cells[col].Visible = false;
for(int hiddenrows = 0; hiddenrows < MyTable.Rows.Count; hiddenrows++)
{
MyTable.Rows[hiddenrows].Cells[col].Visible = false;
}
}
hasData = false;
}
}
如何防止这些字段被隐藏?
检查列类型:
protected void MyTable_DataBound(object sender, EventArgs e)
{
Boolean hasData = false;
for (int col = 0; col < MyTable.HeaderRow.Cells.Count; col++)
{
if (MyTable.Columns[col] is HyperLinkField || MyTable.Columns[col] is TemplateField)
{
continue;
}
for (int row = 0; row < MyTable.Rows.Count; row++)
{
if(!String.IsNullOrEmpty(MyTable.Rows[row].Cells[col].Text) && !String.IsNullOrEmpty(HttpUtility.HtmlDecode(MyTable.Rows[row].Cells[col].Text).Trim()))
{
hasData = true;
break;
}
}
if (!hasData)
{
MyTable.HeaderRow.Cells[col].Visible = false;
for(int hiddenrows = 0; hiddenrows < MyTable.Rows.Count; hiddenrows++)
{
MyTable.Rows[hiddenrows].Cells[col].Visible = false;
}
}
hasData = false;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.