在一个单元格中放置多个数据ASP.NET、VB.NET

在一个单元格中放置多个数据ASP.NET、VB.NET,asp.net,vb.net,datagrid,Asp.net,Vb.net,Datagrid,如何将多个数据放在一个datagrid单元中?例如,用户可以是不同组织的成员 但我不希望该表为作为多个组织成员的同一用户创建新的datagrid行 下面是代码现在的样子: Dim dSourceMemberOf As New SqlDataAdapter("QUERY", dbConn) username memberof user1 dft user1 kbo user2 test 这将填充datagrid,但对于某些用户,有超过5行。所以我

如何将多个数据放在一个datagrid单元中?例如,用户可以是不同组织的成员

但我不希望该表为作为多个组织成员的同一用户创建新的datagrid行

下面是代码现在的样子:

Dim dSourceMemberOf As New SqlDataAdapter("QUERY", dbConn)
username    memberof 
user1       dft 
user1       kbo 
user2       test
这将填充datagrid,但对于某些用户,有超过5行。所以我想把所有数据放在一个单元格中的一个特定列中

如何做到这一点

编辑:

这就是现在的情况:

Dim dSourceMemberOf As New SqlDataAdapter("QUERY", dbConn)
username    memberof 
user1       dft 
user1       kbo 
user2       test
这就是我想要它看起来的样子:

username   memberof 
user1      dft
           kbo 
user2      test

对不起,我认为在油漆上是错误的,但概念是正确的-看起来你需要在活动上这样做。。。(我认为前三个链接将向您展示如何执行您所需的操作)-您可以查看您所在的行,获取上一行,然后根据上一行决定如何处理当前行中的单元格我认为最好的解决方案是使用Linq查询对数据进行分组,然后将分组后的数据绑定到gridview:

因此,GridView将如下所示:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="UserName" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:ListBox ID="lst" runat="server" DataSource="<%# Container.DataItem.MemberOfGrouped %>" DataTextField="MemberOf"></asp:ListBox>
            </ItemTemplate>

        </asp:TemplateField>
    </Columns>
</asp:GridView>

您可以使用GridView单元格中的一个表(或Ross Scott建议的列表框)


我认为这是最灵活的方法。

我的第一个想法是将它合并到基础查询中的逗号分隔列表中。你能给我举个例子吗?我更新了问题。如果只是如何显示,您不需要更改基础查询-格式应该在演示层进行a但是如果我现在这样做,我如何影响其显示方式?看起来您想使用某种组标题功能,不要认为你可以在一个普通的.net数据网格上做这件事,因为如果你这样显示数据的话,你需要确保排序是关闭的。tbh,我通常会多次向用户展示,这样更灵活,您可以轻松地用单击的内容创建对象(因为您的所有数据都存在于该行)@shoubs先生,这些数据仅用于参考,以查看谁是what的成员。此视图不用于任何方式的更改。
Protected Sub Gridview1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles Gridview1.RowDataBound
    Select Case e.Row.RowType
        Case DataControlRowType.DataRow
            Dim drUser As DataRowView = DirectCast(e.Row.DataItem, DataRowView)
            Dim TblUserGroups As Table = DirectCast(e.Row.FindControl("TblUserGroups"), Table)
            Dim userID as int32 = Ctype(drUser(0), Int32)
            Dim tblGroups as DataTable = getTblUserGroups(userID) 'write a function that returns the Groups of a given User f.e. as DataTable'
            If tblGroups.Rows.Count = 0 Then
                Dim tr As New TableRow
                Dim td As New TableCell
                Dim LblNoGroup As New Label
                LblNoGroup .Text = "no user-group"
                td.CssClass = "UserWithoutGroup"
                td.Controls.Add(LblNoGroup)
                tr.Cells.Add(td)
                TblUserGroups.Rows.Add(tr)
            Else
                For Each groupRow As DataRow In tblGroups.Rows
                    Dim tr As New TableRow
                    Dim td As New TableCell
                    Dim LblGroup As New Label
                    LblGroup.Text = groupRow("GroupName").ToString 'The groups name column'
                    td.Controls.Add(LblGroup)
                    tr.Cells.Add(td)
                    TblUserGroups.Rows.Add(tr)
                Next
            End If
    End Select
End Sub