如何在gridview中合并标头以提供子标头 [英] How do I merge headers in gridview to give sub headers

查看:82
本文介绍了如何在gridview中合并标头以提供子标头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在重建一个来自asp的网站并将其转换为asp.net,原因很明显。我目前处于两难境地,并且不知道如何合并标头以在neath下提供一个大的主标题和一堆子标题,但仍然与其他标题位于同一行。我已经检查但没有找到一种方法来解决我的具体情况:(



这是我的代码背后



Hi, I am currently rebuilding a site from asp and converting it to asp.net for the obvious reasons. I am currently in a dilemma and don't know how to merge headers to give one big main header and a bunch of sub headers under neath but still in the same row as the other headers. I have checked but haven't found a way to do it specific to my situation :(

Here is my code behind

<pre>  Private Sub LoadVehiclesTable()
        LoadFacilitiesArray()

        Dim sSQL As String = "SELECT VehicleSerialNo, VehicleID, FleetNo, RegistrationMark, VehicleType, ChassisMakeType, BodyMakeType, FirstRegistered, Seats, MobileTelNo, Base, " &amp; _
            "(SELECT DateValue FROM VehicleData WHERE VehicleDataTitleSerialNo = 2 AND VehicleSerialNo = V.VehicleSerialNo) AS RegoDue " &amp; _
            "FROM Vehicles V " &amp; _
            "WHERE (VehicleType &lt;&gt; 'SUB') And DateSold IS Null " &amp; _
            "ORDER BY " &amp; sOrderBy

        cnPHCS = New SqlConnection(DBCONN_STR)
        cnPHCS.Open()
        Dim drVehicle As SqlDataReader = New SqlCommand(sSQL, cnPHCS).ExecuteReader
        Dim dtData As Data.DataTable, drRow As Data.DataRow
        Dim iIndex As Integer, bFound As Boolean = False
        dtData = New Data.DataTable
        dtData = MakeVehiclesTable()
        Do While drVehicle.Read
            drRow = dtData.NewRow
            drRow("FleetNo") = drVehicle("FleetNo")
            drRow("Rego") = drVehicle("RegistrationMark")
            drRow("Type") = drVehicle("VehicleType")
            If Not IsDBNull(drVehicle("FirstRegistered")) Then drRow("Year") = Year(drVehicle("FirstRegistered"))
            drRow("Chassis") = drVehicle("ChassisMakeType")
            drRow("Body") = drVehicle("BodyMakeType")
            drRow("Seats") = drVehicle("Seats")
            If Not IsDBNull(drVehicle("RegoDue")) Then drRow("RegoDue") = FormatDate(drVehicle("RegoDue"), sDateFormat)
            drRow("Base") = drVehicle("Base")
            For iIndex = 0 To arrFacilities.Length - 1
                If arrFacilities(iIndex).VehicleID = drVehicle("VehicleID") Then
                    drRow("AC") = IIf(arrFacilities(iIndex).AC, "X", "")
                    drRow("SB") = IIf(arrFacilities(iIndex).Belts, "X", "")
                    drRow("3-2") = IIf(arrFacilities(iIndex).Seat3for2, "X", "")
                    drRow("LB") = IIf(arrFacilities(iIndex).Bins, "X", "")
                    drRow("CD") = IIf(arrFacilities(iIndex).CD, "X", "")
                    drRow("VCR") = IIf(arrFacilities(iIndex).VCR, "X", "")
                    drRow("DVD") = IIf(arrFacilities(iIndex).DVD, "X", "")
                    drRow("RR") = IIf(arrFacilities(iIndex).RestRoom, "X", "")
                    drRow("KD") = IIf(arrFacilities(iIndex).Kneel, "X", "")
                    drRow("U") = IIf(arrFacilities(iIndex).Urn, "X", "")
                    Exit For
                End If
            Next
            dtData.Rows.Add(drRow)
        Loop
        gvVehicle.DataSource = dtData
        gvVehicle.DataBind()

        drVehicle.Close() : drVehicle = Nothing
        cnPHCS.Close() : cnPHCS = Nothing

    End Sub</pre>

<pre lang="vb">Protected Sub LoadFacilitiesArray()
        Dim drFacilities As SqlDataReader, sSQL As String, sLastVehicleID As String = &quot;&quot;
        Dim iIndex As Integer = 0

        cnPHCS = New SqlConnection(DBCONN_STR)
        cnPHCS.Open()
        sSQL = &quot;SELECT VF.VehicleID, Facility &quot; &amp; _
            &quot;FROM VehicleFacilities VF INNER JOIN Vehicles V ON VF.VehicleID = V.VehicleID &quot; &amp; _
            &quot;WHERE (VehicleType &lt;&gt; &#39;SUB&#39;) And DateSold IS Null  &quot; &amp; _
            &quot;ORDER BY VehicleID, Facility &quot;

        drFacilities = New SqlCommand(sSQL, cnPHCS).ExecuteReader

        Do While drFacilities.Read
            If sLastVehicleID &lt;&gt; drFacilities(&quot;VehicleID&quot;) Then
                ReDim Preserve arrFacilities(iIndex)
                arrFacilities(iIndex) = New VehicleFacility
                arrFacilities(iIndex).VehicleID = drFacilities(&quot;VehicleID&quot;)
                iIndex += 1
                sLastVehicleID = drFacilities(&quot;VehicleID&quot;)
            End If
            With arrFacilities(iIndex - 1)
                Select Case UCase(drFacilities(&quot;Facility&quot;))
                    Case &quot;AIR CONDITIONING&quot; : .AC = True
                    Case &quot;SEATBELTS&quot; : .Belts = True
                    Case &quot;3-FOR-2 SEATING&quot; : .Seat3for2 = True
                    Case &quot;LUGGAGE BINS&quot; : .Bins = True
                    Case &quot;TV/DVD&quot; : .DVD = True
                    Case &quot;KNEELING DEVICE&quot; : .Kneel = True
                    Case &quot;REST ROOM&quot; : .RestRoom = True
                    Case &quot;HOT WATER URN&quot; : .Urn = True
                    Case &quot;CD PLAYER&quot; : .CD = True
                    Case Else
                End Select
            End With
        Loop

    End Sub</pre>







这是我的数组,用于获取所有子类别的数据,此时它们只是显示在彼此旁边数据



这里是它在asp中的样子以及我希望它在新的asp.net/vb.net中的样子



< img src =http://www.anony .ws / i / 2014/04/29 / P9icx.th.pngborder =0/>

推荐答案

试试

通过在ASP.NET中添加多个标题(标题行)合并(合并)GridView标题列(单元格) [ ^ ]

在ASP.NET中合并GridView列标题 [ ^ ]

如何创建多个行标题并将其合并为GridView中的其他列 [ ^ ]
Try
Merge ( Merging ) GridView Header Columns ( Cells ) by adding Multiple Headers ( Header Row ) in ASP.NET[^]
GridView column header merging in ASP.NET[^]
How to create multiple row header and merge it with other columns in GridView [^]


这篇关于如何在gridview中合并标头以提供子标头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆