2013-02-26 71 views
1

我想知道如何將多個記錄合併到一個gridview行中。看看下面的例子。將多個記錄合併爲一個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,因此無論組和顏色有多少行,它仍然是ONE行。本質上,gridview主要是顯示關於家庭的信息,而GROUP/COLOR只是嚴格用於關於家庭的細節。

這是應該在SQL中完成還是通過Gridview綁定事件完成?我將如何實現我的目標?

如果我的解釋不清楚,請讓我知道,我會盡力澄清。

回答

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 

乾杯

0

你可以做你的要求在SQL並返回一個數據集,你可以進行數據綁定來控制

+0

有訂購組和顏色沒有好辦法在SQL中當它們合併成一個字段時。 – Ceres 2013-02-26 21:32:49

+0

這樣做的最好方法是使用公用表表達式。 – Valen 2013-02-26 21:38:14

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 
0

您可以使用gridviewhelper在GridView的分組,Grid View Helper

C#編寫的,你可以用它在VB作爲

Dim helper As GridViewHelper = New GridViewHelper(sender) 
    helper.RegisterGroup("colname", True, True) 
    helper.ApplyGroupSort()