在现有 GridView 中显示来自另一个 table 的记录
Display records from another table in an existing GridView
这是我面临的问题的一个例子。我有一个table叫Issues,里面有初始记录信息。每条记录也有一个类别,有些记录有多个类别。
问题
ID | Name | Comments | Date | SubmittedBy
1 | Server down | Need assistance | 6/1/2015 | John
问题类别
ID | Name
1 | Internal
2 | External
3 | Mobile
4 | Email
问题目录
QID | CID
1 | 1
1 | 3
1 | 4
我试图在一个 GridView 中显示所有这些内容,如下所示:
Name | Categories | Date | By
Server down | Internal, Mobile, Email | 6/1/2015 | John
所以我想将类别名称放入gridview 的a 列中。我怎样才能做到这一点?这可以通过 SQL 查询来完成,还是我需要在后面的代码中的 RowDataBound 中执行此操作?
<asp:GridView runat="server" ID="issuesView" CssClass="table" OnRowDataBound="issuesView_RowDataBound"
GridLines="None" EmptyDataText="No issues" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Date" DataFormatString="{0:M/d/yy}" HeaderText="Date" />
<asp:BoundField DataField="SubmittedBy" HeaderText="By" />
</Columns>
</asp:GridView>
SELECT
[ID],
name,
STUFF((
SELECT ', ' + [Name]
FROM #IssuesCategories cats
JOIN #IssuesCatList list on list.CID = cats.ID
WHERE (list.QID = #Issues.ID)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
,1,2,'') AS NameValues
,[date]
,SubmittedBy
FROM #Issues
感谢 this post 出色的 STUFF 表达式。
这是我面临的问题的一个例子。我有一个table叫Issues,里面有初始记录信息。每条记录也有一个类别,有些记录有多个类别。
问题
ID | Name | Comments | Date | SubmittedBy
1 | Server down | Need assistance | 6/1/2015 | John
问题类别
ID | Name
1 | Internal
2 | External
3 | Mobile
4 | Email
问题目录
QID | CID
1 | 1
1 | 3
1 | 4
我试图在一个 GridView 中显示所有这些内容,如下所示:
Name | Categories | Date | By
Server down | Internal, Mobile, Email | 6/1/2015 | John
所以我想将类别名称放入gridview 的a 列中。我怎样才能做到这一点?这可以通过 SQL 查询来完成,还是我需要在后面的代码中的 RowDataBound 中执行此操作?
<asp:GridView runat="server" ID="issuesView" CssClass="table" OnRowDataBound="issuesView_RowDataBound"
GridLines="None" EmptyDataText="No issues" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Date" DataFormatString="{0:M/d/yy}" HeaderText="Date" />
<asp:BoundField DataField="SubmittedBy" HeaderText="By" />
</Columns>
</asp:GridView>
SELECT
[ID],
name,
STUFF((
SELECT ', ' + [Name]
FROM #IssuesCategories cats
JOIN #IssuesCatList list on list.CID = cats.ID
WHERE (list.QID = #Issues.ID)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
,1,2,'') AS NameValues
,[date]
,SubmittedBy
FROM #Issues
感谢 this post 出色的 STUFF 表达式。