1

複数のレコードを1つのグリッドビュー行にする方法を知りたいです。次の例を見てください。

情報源:

FAMILY        GROUP              COLOR
 Dog          Poodle              Blue
 Dog          German Shepherd     Red
 Dog          Pitubll             orange
 Cat          Evil                Green
 Cat          Tabby               purple

グリッドビューで次の外観を作成しようとしています

      FAMILY       GROUP              COLOR
===============================================
      |        |   Poodle           |  Blue
ROW1  | DOG    |   German Shepherd  |  Red
      |        |   Pitbull          |  Orange
===============================================
      |        |   Evil             |  green
ROW2  | CAT    |   tabby            |  purple

ファミリ列(複数ある場合)は1つのセルとして表示され、対応する各サブカテゴリはそれぞれの行として表示されます。

このように、ユーザーが行を選択すると、タイプFAMILYの行全体が選択されます。各行はFAMILYに基づいているため、グループや色に含まれる行の数に関係なく、1つのファミリ行のままになります。基本的に、グリッドビューは主に家族に関する情報を表示するためのものであり、グループ/色は家族に関する詳細に厳密に使用されます。

これはSQLで実行する必要がありますか、それともGridviewバインドイベントを介して実行する必要がありますか?どうすれば目標を達成できますか?

説明が不明確な場合はお知らせください。明確にするよう努めます。

4

4 に答える 4

3

ご意見をお寄せいただきありがとうございます。

さらなる調査の後、私は以下に出くわしました。この質問に対する少なくとも部分的な答えがあるように共有したいと思います。

同一の値を含む行に基づいてセルを結合することにより、最終的に目標が達成されました。以下のリンクを参考にしました。

http://forums.asp.net/t/1053747.aspx/1

http://www.c-sharpcorner.com/uploadfile/satyapriyanayak/ghrth/

今、私はまだ理解していない単一の行として各行(複数のサブカテゴリを持つ)を扱うことを検討しています。

この質問は上記のリンクで回答されていると考えられます。OPで与えられた例を使用して、コアコードは次のとおりです(簡単な要約)。

情報源:

FAMILY        GROUP              COLOR
 Dog          Poodle              Blue
 Dog          German Shepherd     Red
 Dog          Pitubll             orange
 Cat          Evil                Green
 Cat          Tabby               purple

gridview rowdatabound で、次の構造を使用します (VB.NET)

CLASS LEVEL VARIABLES
Protected familyName AS String
Protected familyNameCell AS TableCell

If e.Row.RowType = DataControlRowType.DataRow Then

        If Me.familyName <> e.Row.Cells(0).Text Then
            Me.familyName = e.Row.Cells(0).Text
            Me.familyNameCell = e.Row.Cells(0)

        Else
            'remove cells from any column index
            e.Row.Cells.RemoveAt(0)

            'increase rowspan of any cell in column that had a cell removed
            If Me.familyNameCell.RowSpan = 0 Then
                Me.familyNameCell.RowSpan = 2
            Else
                Me.familyNameCell.RowSpan += 1
            End If
        End If
End If

乾杯

于 2013-03-05T19:49:40.463 に答える
0

カスタムクラスのコレクションを作成し、それをグリッドにバインドします。

Dim MyDataList As New List(Of MyData)

'Populate list

MyGrid.Datasource = MyDataList
MyGrid.Databind()

..。

Public Class MyData

    Public Property Family As String
    Private _Groups As List(Of String)
    Private _Colors As List(Of String)

    Public Property Groups() As String
        Get
            Return String.Join(", ", _Groups)
        End Get
        Set(value As String)
            _Groups.Add(value)
        End Set
    End Property

    Public Property Colors() As String
        Get
            Return String.Join(", ", _Colors)
        End Get
        Set(value As String)
            _Colors.Add(value)
        End Set
    End Property

    Public Sub New(family As String)

        Me._Family = family
        Me._Groups = New List(Of String)
        Me._Colors = New List(Of String)

    End Sub
End Class
于 2013-02-26T21:32:34.257 に答える
0

gridviewhelperを使用して、 gridview、GridViewHelperでグループ化できます。

C#で記述されているため、vbで次のように使用できます。

 Dim helper As GridViewHelper = New GridViewHelper(sender)
    helper.RegisterGroup("colname", True, True)
    helper.ApplyGroupSort()
于 2013-02-26T21:44:20.347 に答える
0

SQLで要求したことを実行し、データバインドして制御できるデータセットを返すことができます

于 2013-02-26T21:25:49.953 に答える