0

私は新しい ASP.NET 開発者で、ASP.NET Web サイトで説明されているものと同様の単純なクイズ エンジン Web ベース アプリケーションを開発しました。アプリケーションは、単一の回答または複数の回答を持つ複数の選択肢の質問など、さまざまな種類の質問を表示する必要があります。現在、可能な選択肢 (2 つの選択肢または 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はその問題の正解を指すフラグです)

StackOverFlow の誰かが提案したように、ネストされた GridViews として実装することから始めました。しかし、可能な回答のみを含む質問を取得し、[次へ] ボタンをクリックして別の質問に移動する方法がわかりません。それで、これを修正するのを手伝ってくれませんか?

私の 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 つの選択肢) を含むあらゆる種類の質問を表示できるクエリを考え出す必要があります。

注: ASP.NET コードに示されているように、設計で QuizID を SessionParameter として使用する必要がありますか?

4

1 に答える 1

0

あなたが正しく理解している場合は、親GridviewでPageSize = 1を変更してください。これにより、親 GridView の 1 行のみが表示されます。これはおそらくGridviewの質問です。また、AllowPaging=true に変更します。ああ...あなたはとても新しいようです。あなたが書いたクエリは正しくありません。Sql を学習し、.net のパラメーター化されたクエリを学習します。マスターと子の関係を使用する場合、子グリッドは SelectedDatakey.Value を使用して子クエリに提供します。" SelectCommand="SELECT * FROM [回答] where QuestionId=@QuestionId">

また、外部キー関係の Answers テーブルに QuestionId を含める必要があります。あなたは非常に新しい最初の研究のようです。データベースとクエリを使用すると、少し安心できます。

于 2012-07-28T19:13:17.520 に答える