нижний колонтитул gridview - PullRequest
       3

нижний колонтитул gridview

1 голос
/ 29 января 2011

У меня есть сетка, которая содержит Часы в качестве одного из столбцов. Теперь мне нужно, чтобы в нижнем колонтитуле было общее количество часов (сумма часов для всех строк). Как мы можем добавить это? Просьба помочь

Ответы [ 4 ]

1 голос
/ 24 декабря 2011
Imports System.Data
Imports System.Data.SqlClient


Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        ' 検索を行う
        Dim cn As New SqlConnection( _
            SqlDataSource1.ConnectionString)
        Dim da As New SqlDataAdapter( _
            "SELECT count(*), sum(age) FROM person", cn)
        Dim dt As New DataTable
        da.Fill(dt)
        ' 人数と年齢の合計を取得する
        Dim n As Integer = CType(dt.Rows(0)(0), Integer)    ' 人数
        Dim sum As Integer = CType(dt.Rows(0)(1), Integer)  ' 年齢の合計
        ' フッターに設定する
        GridView1.Columns(0).FooterText = String.Format("{0}人", n)
        GridView1.Columns(1).FooterText = String.Format("合計{0}", sum)
    End If
End Sub
End Class
0 голосов
/ 15 февраля 2012

Перенос элементов вида сетки в таблицу данных, программный расчет суммы каждого столбца, Создание шаблонов нижнего колонтитула для вида сетки, вставка меток, Поиск меток по нужному событию и привязка данных.

0 голосов
/ 29 января 2011

Поскольку отображается каждая строка (т. Е. Когда вызывается событие RowDataBound) Вам необходимо сохранить промежуточное количество часов для каждой строки, следующий код должен это сделать.(Измененная версия примера с сайта MSDN)

Как только вы попадете в событие RowDataBound для нижнего колонтитула, вы увидите общее количество часов.

' This will keep the running total for the number of hours, and should be placed at the top of your page class

Dim Hours as Integer 


Sub detailsGridView_RowDataBound(ByVal sender As Object, _
  ByVal e As GridViewRowEventArgs)

    If e.Row.RowType = DataControlRowType.DataRow Then

        Hours  += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Hours"))

    ElseIf e.Row.RowType = DataControlRowType.Footer Then
        e.Row.Cells(0).Text = "Totals Hours:"
        e.Row.Cells(1).Text = Hours.ToString("c")           
        e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Right
        e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Right
        e.Row.Font.Bold = True
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...