在我的程序中,我生成了一个表,如:
id Roll Subject Marks LetterGrade GradePoint
1 1 Physics 40 D 1
2 1 Chemistry 50 C 2
3 1 Mathematics 60 B 3
4 2 Physics 40 D 1
5 2 Chemistry 50 C 2
6 2 Biology 59 C 2我使用VB6和MS Access作为数据库。现在我想在Datagrid中显示如下内容:
Roll Sub Marks LetterG Gp Sub Marks LetterG Gp Sub Marks LetterG Gp GPA GPAExcl
1 Physics 40 D 1 Chemistry 50 C 2 Mathematics 60 B 3 2.00 1.5
2 Physics 40 D 1 Chemistry 50 C 2 Biology 59 C 2 1.5 1.5行越多,滚动越多
每个卷的id最大的主题是附加主题。如果其Gp大于2,则将其与GPA相加,GPAExcl仅具有前两个主题
因此,对于第一卷,GPA是(1+2+1)/2=2.00 (数学中的Gp大于2和3-2=1)
GPAExcl是(1+2)/2=1.5
对于第二卷,GPA和GPAExcl=1.5都是
如何编写sql查询,这样我就可以获得这样的记录并在datagrid中显示它
编写这样的查询是可能的吗?
发布于 2011-06-23 20:22:34
在我看来,您需要使用DataList而不是DataGrid。DataList允许您指定RepeatColumns和RepeatDirection。
在这种情况下,您似乎希望RepeatDirection是垂直的。然后你只要计算出你想要多少列就行了。
我不确定您需要SQL有什么不同。这似乎是一个格式问题--而不是查询问题。
好吧,我想我看错了。真对不起。我现在明白了,您想要的是左侧所有三门课程的角色,然后右侧是该角色的所有课程。
可能有几种方法来处理这个问题。一种方法是使用两个中继器。这将创建表格(您需要在中添加标题行)。如果您的每个角色没有相同数量的课程,您将不得不通过columnspan处理列。
<asp:Repeater ID="repRoles" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Role") %></td>
<asp:Repeater id="repCourses" runat="server">
<ItemTemplate>
<td>
<%# Eval("Subject") %>
</td>
<td>
<%# Eval("Marks") %>
</td>
<td>
<%# Eval("LetterGrade") %>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>您可以在第一个转发器上使用ItemDataBound事件,然后将适当的课程绑定到第二个转发器。
https://stackoverflow.com/questions/6449359
复制相似问题