我是一名新的ASP.NET开发人员,我开发了一个简单的Quiz Engine基于Web的应用程序,类似于ASP.NET网站中解释的应用程序。应用程序应该显示不同类型的问题,例如具有单个答案或多个答案的多项选择问题。我现在正在努力查询将以可能的选择(两个选项或4个或5个选项)显示问题的查询。我有以下数据库设计:
Questions Table: QuestionID, Question, QuestionOrder, AnswerExplanation
Answers Table: AnswerID, Answer
Quiz Table: QuizID, Title, Description
QuizContent Table: ID, QuizID, QuestionID, AnswerID, isCorrect
(isCorrect是一个引用该问题的正确答案的标志)
我开始将它实现为嵌套的GridViews,正如StackOverFlow中的某人所建议的那样。但现在我不知道如何仅用可能的答案检索问题,然后点击下一个按钮转到另一个问题。 那么请你帮我修改一下吗?
我的ASP.NET代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="QuestionID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="QuestionID" HeaderText="QuestionID"
InsertVisible="False" ReadOnly="True" SortExpression="QuestionID" />
<asp:BoundField DataField="Question" HeaderText="Question"
SortExpression="Question" />
<asp:BoundField DataField="QuestionOrder" HeaderText="QuestionOrder"
SortExpression="QuestionOrder" />
<asp:BoundField DataField="AnswerExplanation" HeaderText="AnswerExplanation"
SortExpression="AnswerExplanation" />
<asp:TemplateField>
<ItemTemplate>
<asp:GridView ID="AnswersGridView" runat="server" AutoGenerateColumns="false"
DataKeyNames="AnswerID" DataSourceID="SqlDataSource2">
<Columns>
<asp:BoundField DataField="AnswerID" HeaderText="AnswerID"
InsertVisible="False" ReadOnly="True" SortExpression="AnswerID" />
<asp:BoundField DataField="Answer" HeaderText="Answer"
SortExpression="Answer" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:Quiz2ConnectionString %>"
SelectCommand="SELECT * FROM [Answers]"></asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:Quiz2ConnectionString %>"
SelectCommand="SELECT * FROM [Questions]"></asp:SqlDataSource>
现在,我必须提出一个查询,可以显示任何类型的问题及其可能的答案或选择(2或4或6个选项),所以该怎么做? < / p>
注意:我的设计中是否应将QuizID作为SessionParameter,如ASP.NET代码所示?
答案 0 :(得分:0)
如果我理解正确,那么在父Gridview上更改PageSize = 1。这将只显示一行父GridView。这可能是Gridview的问题。同时更改AllowPaging = true。 哦......你似乎很新。您编写的查询不正确。研究Sql并学习.net参数化查询。如果您使用Master-Child关系,那么子网格将使用SelectedDatakey.Value提供给子查询。 “ SelectCommand =“SELECT * FROM [Answers]其中QuestionId = @ QuesionId”&gt;
您还必须在Answers表中包含QuestionId以获取外键关系。你似乎是一个非常新的第一项研究。数据库和查询然后你将是轻松的。