Я использую следующее, чтобы скрыть пустые столбцы с событием DataBound в моем Gridview.Он отлично работает для столбцов 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;
}
}
Как я могу предотвратить скрытие этих полей?