Member 8583441 Ответов: 1

Как получить значения ASP.NET переключатель внутри ASP.NET ретранслятор


Я использую asp.net ретранслятор в веб-приложении в том, что у меня есть четыре переключателя, а также извлечение данных из базы данных в ретранслятор и переключатели, а также. Фактическая моя проблема заключается в том, что я разрабатываю онлайн-экзаменационный сайт, для которого я получаю вопросы и варианты из базы данных, но только при отправке формы он рассматривает первый вопрос нормально, но когда речь заходит о втором вопросе, он принимает только первые вопросы ко второму вопросу и так далее. Как решить эту проблему... Пожалуйста, подскажите мне, где я делаю что-то не так.

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

<div>
    <asp:Repeater ID="QuestionRepeater" runat="server">
        <HeaderTemplate>
            <table>
                <tr>
                    <td>Online Examination</td>
                </tr>
        </HeaderTemplate>
        <SeparatorTemplate>
                <tr>
                    <td>
                        <br />
                    </td>
                </tr>
        </SeparatorTemplate>
        <ItemTemplate>
                <tr>
                    <td>
                        <%#Eval("QuestionNumber") %>
                        <%#Eval("Question") %>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:RadioButton runat="server" ID="rb1" GroupName="Rb_Choice" OnCheckedChanged="CheckChanged" Text='<%# Bind("ChoiceA") %>'></asp:RadioButton>
                    </td>
                    <td>
                        <asp:RadioButton runat="server" ID="rb2" GroupName="Rb_Choice" OnCheckedChanged="CheckChanged" Text='<%# Bind("ChoiceB") %>'></asp:RadioButton>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:RadioButton runat="server" ID="rb3" GroupName="Rb_Choice" OnCheckedChanged="CheckChanged" Text='<%# Bind("ChoiceC") %>'></asp:RadioButton>
                    </td>
                    <td>
                        <asp:RadioButton runat="server" ID="rb4" GroupName="Rb_Choice" OnCheckedChanged="CheckChanged" Text='<%# Bind("ChoiceD") %>'></asp:RadioButton>
                    </td>
                 </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>
</div>


код поддержки:
foreach (RepeaterItem rp in QuestionRepeater.Items)
{
    while (dr.Read())
    {
        if (rp.ItemType == ListItemType.Item || rp.ItemType == ListItemType.AlternatingItem)
        {
            a.QuestionNumber = Convert.ToInt32(dr["QuestionNumber"]);
            var rb1 = rp.FindControl("rb1") as RadioButton;
            var rb2 = rp.FindControl("rb2") as RadioButton;
            var rb3 = rp.FindControl("rb3") as RadioButton;
            var rb4 = rp.FindControl("rb4") as RadioButton;
        }
    }
}

Member 8583441

Здесь я показываю все вопросы на одной странице

1 Ответов

Рейтинг:
7

Member 8583441

Я решил свою проблему... Простая ошибка с моей стороны состоит в том, чтобы поменять местами цикл foreach и цикл while.

Ранее сначала записывался цикл foreach, а затем цикл while для чтения данных из базы данных.

foreach (RepeaterItem rp in QuestionRepeater.Items)
{
    while (dr.Read())
    {
        if (rp.ItemType == ListItemType.Item || rp.ItemType == ListItemType.AlternatingItem)
        {
            a.QuestionNumber = Convert.ToInt32(dr["QuestionNumber"]);
            var rb1 = rp.FindControl("rb1") as RadioButton;
            var rb2 = rp.FindControl("rb2") as RadioButton;
            var rb3 = rp.FindControl("rb3") as RadioButton;
            var rb4 = rp.FindControl("rb4") as RadioButton;
        }
    }
}


Для примера я просто изменил порядок while loop top и foreach loop down что означает чтение из базы данных а затем получение вопросов и опций правильным образом

while (dr.Read())
{
    foreach (RepeaterItem rp in QuestionRepeater.Items)
    {
        if (rp.ItemType == ListItemType.Item || rp.ItemType == ListItemType.AlternatingItem)
        {
            a.QuestionNumber = Convert.ToInt32(dr["QuestionNumber"]);
            var rb1 = rp.FindControl("rb1") as RadioButton;
            var rb2 = rp.FindControl("rb2") as RadioButton;
            var rb3 = rp.FindControl("rb3") as RadioButton;
            var rb4 = rp.FindControl("rb4") as RadioButton;
        }
    }
}


Member 8583441

с этим решением я получаю проблему со следующей записью. Следующая запись не извлекает данные. Как ее решить

CHill60

Я замечаю, что вы задаете много вопросов, на которые потом отвечаете сами. Это поведение немного подозрительно и похоже на репутацию фермерства. Вы также принимаете только свой собственный ответ, даже если другие члены пытались помочь.
Возможно, если бы вы немного постарались решить свои проблемы, прежде чем публиковать их здесь, вы могли бы сэкономить себе немного времени ?

Member 8583441

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

CHill60

Не волнуйся слишком сильно, я просто дал тебе знать :-)