2010-06-03 2 views
4

Я использую хранимую процедуру в базе данных sql в качестве источника данных для SqlDataSourceControl на моей странице .aspx. Затем я использую SqlDataSourceControl в качестве источника данных для gridview на моей странице. Пейджинг установлен на значение true в gridview. То, что я хотел бы сделать, - установить текст метки на общее количество строк в gridview. Я могу использовать этот коднабор текста меток для общего количества строк gridview

'labelRowCount.Text = GridView2.Rows.Count & " layers found" 

, чтобы вернуть число результатов на страницу, но это не дает мне общее количество. Я смотрел в нескольких местах и ​​не добился успеха в поиске решения.

ответ

3

Вы должны использовать базовый источник данных, к которому привязано gridview (grid.DataSource). Например, если вы привязали сетку к datatable, тогда просто введите источник данных grid в datatable и используйте свойство rows.count, чтобы получить общее количество записей. Другой альтернативой было бы получить ссылку на объект источников данных grid, прежде чем вы установите его в сетку, чтобы вы могли напрямую получить счетчик записей.

Так, например (если вы привязаны к DataTable)

int count = ((DataTable)grid.DataSource).Rows.Count; 

Наслаждайтесь!

0

GridView2.Rows сохраняет только строки, которые видны, поэтому, когда размер страницы равен 5, вы получаете только 5 записей. Поскольку Дуг предложил вам установить labelRowCount.Text ondatabound, а не на каждую обратную передачу, потому что при обратной передаче - когда источник данных не привязан снова - источник данных будет ничем. Поэтому хорошим местом может быть привязка сетки к источнику данных.

2

Поместите обработчик событий на «выбранный» для SQL DataSource. Этот обработчик событий имеет аргумент типа SqlDataSourceStatusEventArgs. Там AffectedRows - это количество строк для всего набора данных (а не только то, что показано на текущей странице). Поэтому поймайте это и напишите на свою этикетку:

protected void SqlDataSource_Selected(object sender,SqlDataSourceStatusEventArgs e) 
{ 
    if (e.Exception != null) 
    { 
     // do something useful, then... 
     e.ExceptionHandled = true; 
    } 
    else 
     labelRowCount.Text = String.Format("{0} layers found", e.AffectedRows); 
} 
Смежные вопросы