如何在这个嵌套的GridView中显示问题及其答案?

时间:2012-07-28 18:48:27

标签: c# asp.net gridview sql-server-2008-r2

我是一名新的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代码所示?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么在父Gridview上更改PageSize = 1。这将只显示一行父GridView。这可能是Gridview的问题。同时更改AllowPaging = true。 哦......你似乎很新。您编写的查询不正确。研究Sql并学习.net参数化查询。如果您使用Master-Child关系,那么子网格将使用SelectedDatakey.Value提供给子查询。 “                                                 SelectCommand =“SELECT * FROM [Answers]其中QuestionId = @ QuesionId”&gt;

您还必须在Answers表中包含QuestionId以获取外键关系。你似乎是一个非常新的第一项研究。数据库和查询然后你将是轻松的。