[英]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.