2013-07-03 2 views
2

Использование MS Visual Studio 2012, Telerik, C# .ASP.NET.Если все данные строк имеют нулевой скрытый столбец

Логика мне нужно заключается в следующем:

If a columns data on all rows is null then hide the column 

В основном, если столбец имеет 3 строки данных, если есть все нуль, то Dont беспокоить отображение этого столбца, однако, если имеется значение в 1 из них , затем покажите столбец.

играл вокруг:

foreach (GridColumn columns in dgvUserResults.Columns) 
{ 
    if (columns != null) 
    { 
     columns.Visible = false; 
    } 
    else 
    { 
     columns.Visible = true; 
    } 
} 

код не работает, конечно, не суммируются и не перебирать цикл Еогеаспа просто пропускает его. Хотя не беспокоился об этом, даже если он итерации проходил, мне нужен способ проверить, все ли строки столбца [имя] равны нулю. Там хороший Telerik один лайнер?

+0

Вы только пройдя через все колонны и, конечно, они не нулевой (сам столбец есть). Для каждого столбца вам нужно пройти через каждую строку и проверить, являются ли все значения всех ячеек для этого столбца во всех строках равными нулю. – Corak

+0

idd thats correct like i sed, что код wudnt работает, не уверен, как итерации по строкам и скрыть, когда все имеют нулевой код примера? – lemunk

+0

«Не перебирает цикл foreach, просто пропускает его». Это будет сделано только в том случае, если 'dgvUserResults.Columns' не имеет элементов. Вы уверены, что 'dgvUserResults' правильно инициализирован в этот момент? – Corak

ответ

4

Пожалуйста, попробуйте использовать фрагмент кода.

Использование UniqueName

protected void RadGrid1_PreRender(object sender, EventArgs e) 
{ 
    foreach (GridColumn column in RadGrid1.MasterTableView.Columns) 
    { 
     // If you used ClientSelectColumn then below code is not worked For that you have to put condition 
     //if(column.ColumnType == "GridBoundColumn") 

     int TotalNullRecords = (from item in RadGrid1.MasterTableView.Items.Cast<GridDataItem>() 
           where string.IsNullOrWhiteSpace(item[column.UniqueName].Text) || 
           item[column.UniqueName].Text == "&nbsp;" 
           select item).ToList().Count; 

     if (TotalNullRecords == RadGrid1.MasterTableView.Items.Count) 
     { 
      RadGrid1.MasterTableView.Columns.FindByUniqueName(column.UniqueName).Visible = false; 
     } 
    } 
} 

С помощью индекса

protected void RadGrid1_PreRender(object sender, EventArgs e) 
{ 


    foreach (GridColumn column in RadGrid1.MasterTableView.Columns) 
    { 
     // If you used ClientSelectColumn then below code is not worked For that you have to put condition 
     //if(column.ColumnType == "GridBoundColumn") 

     int TotalNullRecords = (from item in RadGrid1.MasterTableView.Items.Cast<GridDataItem>() 
           where string.IsNullOrWhiteSpace(item[column.UniqueName].Text) || 
           item[column.UniqueName].Text == "&nbsp;" 
           select item).ToList().Count; 

     if (TotalNullRecords == RadGrid1.MasterTableView.Items.Count) 
     { 
      column.Visible = false; 
     } 


    } 
} 
+0

приятный ответ, просто получая небольшую синтаксическую ошибку, неизвестный метод «где (?)» system.collections.generic.ITnumerable lemunk

+0

если возможно, то можете ли вы предоставить полную информацию об ошибке. –

+0

ну, я только что запустил код, чтобы получить ошибку, единственная ошибка, которую он дал мне при попытке сборки: Ошибка 'string' не содержит определения для 'IsNullOrWhiteSpace'. будет IsNullOrEmpty работать? – lemunk

0
For col = 0 To myRadGridView.ColumnCount 
     Dim mustKeepColumn As Boolean = False 
     For Each r In myRadGridView.Rows 

      If Not String.IsNullOrEmpty(r.Cells(col).Value.ToString) Then 
       mustKeepColumn = True 
       Exit For 
      End If 

     Next 
     If Not mustKeepColumn Then 
      myRadGridView.Columns(col).IsVisible = False 
     End If 
    Next 
+0

это будет работать с Telerik RadGridView – dimis164

+0

есть теперь ColumnCount на radgrid, когда я говорю dgvuserResults – lemunk

+0

сво Telerik radgrid управления – lemunk

Смежные вопросы