Скрытие пустых столбцов в Gridview с использованием события DataBound - PullRequest
0 голосов
/ 26 апреля 2019

Я использую следующее, чтобы скрыть пустые столбцы с событием 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;
   }
}

Как я могу предотвратить скрытие этих полей?

1 Ответ

1 голос
/ 26 апреля 2019

Проверьте тип столбца:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...