Member 8583441 Ответов: 1

Как использовать ключевое слово distinct в запрос SELECT, чтобы отобразить вложенные репитеры ASP.NET с#


I want to display the name once and that particular name having values but i am getting the name repeatedly with the values. I am designing Online Examination system in c# asp.net in which Students Questions having Nested Repeaters. Outer Repeater is getting the Subject Topic Name and Inner Repeater is having Questions with options to select. My problem is Subject topic name is getting repeated with the questions that means first question is having topic name 'Auxiliary Verbs'. This topic name has 10 questions for this 10 questions i am getting Auxiliary Verbs 10 times that i don't require. How to achieve this please anybody answer me i will share you query i have used, Nested Repeater and coding part. Please have a look and give me appropriate solution for this problem.

Что я уже пробовал:

Выберите Команду Запрос SQL :
string query = "SELECT DISTINCT SubjectCategory, QuestionNumber FROM QuestionPaper";


Вложенная Страница Aspx Ретранслятора:
<asp:Repeater ID="RptrSubjectCategory" OnItemDataBound="RptrSubjectCategory_ItemDataBound" runat="server">
    <HeaderTemplate>
        <table style="min-height:300px;width:100%;">
    </HeaderTemplate>
    <SeparatorTemplate>
        <tr><td><br /></td></tr>
    </SeparatorTemplate>
    <ItemTemplate>
        <tr style="text-align:left;">
            <th>Topic: <%# DataBinder.Eval(Container.DataItem,"SubjectCategory") %></th>
        </tr>

        <%-- Repeater Questions With Choices --%>
        <asp:Repeater ID="RptrQuestionsAdnChoices" OnItemDataBound="RptrQuestionsAdnChoices_ItemDataBound" runat="server" DataSource='<%# ((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("myRelation") %>'>
            <ItemTemplate>
                <tr>
                    <td style="padding:5px;">
                        <asp:Label ID="lblQuestionNuumber" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[\"QuestionNumber\"]") %>'></asp:Label>
                          <%# DataBinder.Eval(Container.DataItem, "[\"Question\"]") %>
                    </td>
                </tr>
                <tr>
                    <td style="padding:5px;">
                        <asp:RadioButton ID="rb1" runat="server" />
                        A) <asp:Label ID="lblChoiceA" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[\"ChoiceA\"]") %>' AssociatedControlID="rb1"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td style="padding:5px;">
                        <asp:RadioButton ID="rb2" runat="server" />
                        B) <asp:Label ID="lblChoiceB" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[\"ChoiceB\"]") %>' AssociatedControlID="rb2"></asp:Label>                                                                
                    </td>
                </tr>
                <tr>
                    <td style="padding:5px;">
                        <asp:RadioButton ID="rb3" runat="server" />
                        C) <asp:Label ID="lblChoiceC" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[\"ChoiceC\"]") %>' AssociatedControlID="rb3"></asp:Label>                                                             
                    </td>
                </tr>
                <tr>
                    <td style="padding:5px;">
                        <asp:RadioButton ID="rb4" runat="server" />
                        D) <asp:Label ID="lblChoiceD" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "[\"ChoiceD\"]") %>' AssociatedControlID="rb4"></asp:Label>                                                       
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
    <FooterTemplate>
        <tr style="text-align:left;">
            <td style="padding:5px;">
                <asp:LinkButton ID="LnkBtnSubmit" runat="server" CssClass="btn btn-success">Finish</asp:LinkButton>
            </td>
        </tr>
        </table>
    </FooterTemplate>
</asp:Repeater>

1 Ответов

Рейтинг:
0

CHill60

Цитата:
В этом названии темы есть 10 вопросов для этих 10 вопросов я получаю вспомогательные глаголы 10 раз, которые мне не нужны.

Проблема с вашим запросом заключается в том, что вы включили QuestionNumber колонка. Вряд ли вам действительно нужен номер вопроса, поэтому просто оставьте его
SELECT DISTINCT SubjectCategory FROM QuestionPaper
В качестве альтернативы вы можете использовать GROUP BY и возвращать что-то значимое, например количество вопросов в каждой категории, например
SELECT SubjectCategory, COUNT(QuestionNumber) as NoOfQuestions FROM QuestionPaper GROUP BY SubjectCategory


Member 8583441

Извините за поздний ответ, я проверю его и дам вам знать, сэр

Member 8583441

Получение ошибки: это ограничение не может быть включено, так как не все значения имеют соответствующие родительские значения. в System.Data.ConstraintCollection.AddForeignKeyConstraint(ограничение ForeignKeyConstraint) в System.Data.ConstraintCollection.Добавить(ограничение, ограничение, логический addUniqueWhenAddingForeign) в системе.Данных.DataRelationCollection.DataSetRelationCollection.AddCore(DataRelation relation) в System.Data.DataRelationCollection.Добавьте(отношение DataRelation) в System.Data.DataRelationCollection.Добавить(имя строки, DataColumn parentColumn, DataColumn childColumn)

CHill60

Я не добавляю никаких внешних ключей в свой предложенный подход, так что это ваши данные, которые виноваты. У вас должна быть нулевая категория субъекта?

Member 8583441

Если я использую это утверждение "SELECT SubjectCategory, COUNT(QuestionNumber) as NoOfQuestions FROM QuestionPaper GROUP BY SubjectCategory", то возникает вышеуказанная ошибка