我想知道如何将多个记录放入单个gridview行。看一下下面的例子。
数据来源:
FAMILY GROUP COLOR
Dog Poodle Blue
Dog German Shepherd Red
Dog Pitubll orange
Cat Evil Green
Cat Tabby purple
我正在尝试在gridview中创建以下内容
FAMILY GROUP COLOR
===============================================
| | Poodle | Blue
ROW1 | DOG | German Shepherd | Red
| | Pitbull | Orange
===============================================
| | Evil | green
ROW2 | CAT | tabby | purple
Family列(如果有多个)将显示为一个单元格,每个对应的子类别显示为各自的行。
这样当用户选择行时,选择FAMILY类型的整行。每一行都基于FAMILY,因此无论组和颜色中有多少行,它仍然是一个行族。基本上gridview主要是显示有关FAMILY的信息,GROUP / COLOR只是严格用于有关该系列的详细信息。
这是应该在SQL中还是通过Gridview绑定事件完成的?我将如何实现目标?
如果我的解释不清楚,请告诉我,我会尽力澄清。
答案 0 :(得分: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
干杯
答案 1 :(得分:0)
您可以在SQL中执行您的要求并返回可以数据绑定以控制的数据集
答案 2 :(得分: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
答案 3 :(得分:0)
您可以使用gridviewhelper在gridview中进行分组,Grid View Helper
用c#编写,你可以在vb中使用
Dim helper As GridViewHelper = New GridViewHelper(sender)
helper.RegisterGroup("colname", True, True)
helper.ApplyGroupSort()