2013-08-06 3 views
0

Я пытаюсь показать общее количество часов, отработанных из сетки, имеющей несколько страниц.Grandtotal on Gridview со страницами

это то, что я делаю сейчас:

protected void gwWorkhours_DataBound(object sender, GridViewRowEventArgs e) 
    { 
     int hour = 0; 
     if (e.Row.DataItem != null) 
     { 
      string hours = DataBinder.Eval(e.Row.DataItem, "hours").ToString(); 
       Int32.TryParse(hours, out hour); 
       completeCount += hour; 
     } 

    } 

но это только показывает мне всего на первой странице.

я использую ObjectDataSource для заполнения сетки, как так:

gwWorkhours.DataSourceID = "ObjectDataSource1"; 
     gwWorkhours.DataBind(); 

является возможным, возможно, получить DataTable из ObjectDataSource после того, как он был связан с GridView, чтобы затем итерацию через него? я не хочу, чтобы делать другой вызов в базу данных, если я действительно должен.

+0

Позвольте мне спросить, есть ли смысл иметь общий итог быть частью 'GridView' вообще? Например, скажем, у меня есть столбец, который представляет количество книг в коллекции, а первая страница сетки показывает 10 записей. Каждая из строк имеет счет 2, поэтому общее число для страницы равно 20, но всего 20 страниц в сетке, поэтому общая сумма для всех данных равна 400. В качестве пользователя я был бы смущен, чтобы видеть 10 строк со значением 2, а затем всего 400 в нижнем колонтитуле ниже 10-й строки. Я бы подумал, что логика программы нарушена. –

ответ

1

Да, как вы уже поняли, вы получаете всего лишь одну страницу, потому что вы только добавляете эту страницу. Вы можете получить фактическое ObjectDataSourceView так:

var view = this.dataSource.GetView() as ObjectDataSourceView; 

, а затем вы можете оформить Select так:

view.Select(null); 

Параметр типа DataSourceSelectArguments, так что если вам нужно передать в качестве аргументов, вы нужно будет построить один из них.

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