Итак, я новичок в C # и asp.net (и вообще в программировании: $)
, и я хотел сделать простой генератор бумаги вопрос
, но у меня есть некоторые проблемы.
У меня есть таблица 'вопрос'
[level] INT
[subjectId] VARCHAR
[subjectname] VARCHAR
[question] VARCHAR
[answer] VARCHAR
[difficulty] CHAR
[mark] INT
с множеством вопросов о другой теме, уровне и отметке .. и т. Д.
поэтому я хотел, чтобы пользователь выбрал уровень, subId, сложность и общую оценку.
в моем коде
он генерирует вопрос на основе выбранных условий (кроме итоговой оценки) и показывает их в виде сетки вместе с отметкой для каждого вопроса, и он работает нормально.
то, что я не могу сделать, это общая часть оценки, я хочу, чтобы он выбрал только вопрос о том, что сумма его оценки равна тому, что выбрал пользователь
У меня есть выбор для общего количества баллов
<asp:RadioButtonList ID="total" runat="server">
<asp:ListItem Value="10">10</asp:ListItem>
<asp:ListItem Value="15">15</asp:ListItem>
<asp:ListItem Value="40">40</asp:ListItem>
</asp:RadioButtonList>
, поэтому я хочу, чтобы, когда пользователь выбрал, например, 10, он выбрал, например, пять вопросов из 2 оценок или любые вопросы с суммой своих оценок, равной 10
Я пробовал много способов. Я использовал
// with group by and w/o the where condition
" having SUM(mark) = "+total.SelectedValue+ " "
но я по ошибке продублировал строки (5 раз) (без первичного ключа), которые БД рассматривает как одну строку (вопрос с 2 баллами)
таким образом, это предложение выделило только эту строку,
и я даже не мог понять, как использовать «где» и «иметь» вместе -> // эта часть решена
но он по-прежнему показывает только дублированную запись и ничего не показывает с DISTINCT
но я хочу выбрать разные строки (разные вопросы) с разными отметками
но я не знаю как
Итак, возможно ли поставить это условие с моим кодом, и если нет, могу ли я написать код по-другому?
con.Open();
SqlDataAdapter sda;
if (dif.SelectedValue == "easy")
{
sda = new SqlDataAdapter("Select subjectId, level, difficulty, question, mark from addquestion where subjectId= '" + sudjectID.SelectedValue + "' and level= " + level.SelectedValue + " and difficulty = '" + dif.SelectedValue + "' ORDER BY NEWID() ", con);
}
else if (dif.SelectedValue == "medium")
{
sda = new SqlDataAdapter("Select subjectId, level, difficulty, question, mark from addquestion where subjectId= '" + sudjectID.SelectedValue + "' and level= " + level.SelectedValue + " and difficulty = '" + dif.SelectedValue + "' ORDER BY NEWID() ", con);
}
else if (dif.SelectedValue == "hard")
{
sda = new SqlDataAdapter("Select subjectId, level, difficulty, question, mark from addquestion where subjectId= '" + sudjectID.SelectedValue + "' and level= " + level.SelectedValue + " and difficulty = '" + dif.SelectedValue + "' ORDER BY NEWID() ", con);
}
else
sda = new SqlDataAdapter("Select subjectId, level, difficulty, question, mark from addquestion where subjectId='" + sudjectID.SelectedValue + "' and level=" + level.SelectedValue + " ORDER BY NEWID() ", con);
sda.SelectCommand.ExecuteScalar();
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
con.Close();
Я действительно много чего перепробовал, и я почти прочитал Интернет: '), и посмотрел все YT:'), но я не смог найти никакого решения.
даже я надеялся найти сложные вещи, которые я не пойму, но спрошу, как это сделать, но я этого не сделал: ')
так что большое спасибо кто поможет <3 </p>
и это моя страница генерации, если это поможет
<asp:Label ID="Label3" runat="server" Text="Subject ID"></asp:Label>
<br />
<asp:DropDownList ID="sudjectID" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem>CSC-101</asp:ListItem>
<asp:ListItem>3-COMP-011</asp:ListItem>
<asp:ListItem>COMP3-112</asp:ListItem>
<asp:ListItem>COMP-151</asp:ListItem>
<asp:ListItem>COMP-213</asp:ListItem>
<asp:ListItem>INFS-241</asp:ListItem>
<asp:ListItem>COMP-003</asp:ListItem>
<asp:ListItem>COMP-336</asp:ListItem>
<asp:ListItem>COMP-004</asp:ListItem>
<asp:ListItem>COMP-433</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:Label ID="Label2" runat="server" Text="Level"></asp:Label>
<br />
<asp:DropDownList ID="level" runat="server">
<asp:ListItem></asp:ListItem>
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
<asp:ListItem>8</asp:ListItem>
<asp:ListItem>9</asp:ListItem>
<asp:ListItem>10</asp:ListItem>
</asp:DropDownList> <br />
<br />
<asp:Label ID="Label1" runat="server" Text="Difficulty"></asp:Label>
<br />
<asp:RadioButtonList ID="dif" runat="server">
<asp:ListItem>easy</asp:ListItem>
<asp:ListItem>medium</asp:ListItem>
<asp:ListItem>hard</asp:ListItem>
<asp:ListItem>random</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Label ID="Label4" runat="server" Text="Total Mark"></asp:Label>
<asp:RadioButtonList ID="total" runat="server">
<asp:ListItem Value="10">10</asp:ListItem>
<asp:ListItem Value="15">15</asp:ListItem>
<asp:ListItem Value="40">40</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Button ID="Button1" runat="server" Height="35px" OnClick="Button1_Click" Text="Generate" Width="92px" />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>