저는 현재 내 문제에 대한 해결책을 오랫동안 찾고 있었으며 해결책을 찾지 못했습니다. 추신 : 저는 독일어로 퀴즈 게임을하고 있습니다. 따라서 변수 이름 등을 이해하지 못할 수도 있지만 문제는 아닙니다.DataTable 편집이 올바르게 표시되지 않습니다.
은 제가 임의의 질문을 선택하고, 클래스 SQL
8 열이있는 DataTable에 있고, 마지막 열에서 다른 클래스에서는 0
namespace Quiz
{
class SQL
{
public static DataTable GEO_Fragen()
{
using (DataTable GEO = new DataTable("Geografie"))
{
GEO.Columns.Add("ID", typeof(int));
GEO.Columns.Add("Frage", typeof(string));
GEO.Columns.Add("Antwort 1", typeof(string));
GEO.Columns.Add("Antwort 2", typeof(string));
GEO.Columns.Add("Antwort 3", typeof(string));
GEO.Columns.Add("Antwort 4", typeof(string));
GEO.Columns.Add("Richtige Antwort", typeof(int));
GEO.Columns.Add("Gefragt", typeof(int));
GEO.Rows.Add(0, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(1, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(2, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(3, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(4, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(5, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(6, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(7, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(8, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(9, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(10, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(11, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(12, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(13, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(14, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(15, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(16, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(17, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(18, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
GEO.Rows.Add(19, "Question", "Answer 1", "Answer 2", "Answer 3", "Answer 4", 4, 0);
return GEO;
}
}
//...more code
이있다. 이 질문에 마지막 열 (이전에 사용한 적이 있음을 의미)에 "1"이 있으면 다른 질문이 생성됩니다.
public void Zufallszahl()
{
zufall = rnd.Next(0, SQL.GEO_Fragen().Rows.Count);
if (SQL.GEO_Fragen().Rows[zufall]["Gefragt"].ToString() == "1")
{
Zufallszahl();
}
else
{
lbl_Frage.Text = SQL.GEO_Fragen().Rows[zufall]["Frage"].ToString(); //Filling in a random Question and Answers
rad_Antwort1.Text = SQL.GEO_Fragen().Rows[zufall]["Antwort 1"].ToString();
rad_Antwort2.Text = SQL.GEO_Fragen().Rows[zufall]["Antwort 2"].ToString();
rad_Antwort3.Text = SQL.GEO_Fragen().Rows[zufall]["Antwort 3"].ToString();
rad_Antwort4.Text = SQL.GEO_Fragen().Rows[zufall]["Antwort 4"].ToString();
rad_Antwort1.Checked = false; // No radio button is ticked
rad_Antwort2.Checked = false;
rad_Antwort3.Checked = false;
rad_Antwort4.Checked = false;
}
}
이제 진짜 문제에
: 나는 무작위로 선택한 행의 마지막 컬럼의 값을 변경하고 때, 디버깅 모드 그래서 정말 짧게하고있다. 하지만 그 직후,이 셀의 값을 보여 주면 다시 "0"을 표시합니다.private void btn_Weiter_Click(object sender, EventArgs e)
{
if (rad_Antwort1.Checked == true || rad_Antwort2.Checked == true || rad_Antwort3.Checked == true || rad_Antwort4.Checked == true)
{
Pruefen(); // Checking the chosen answer
lbl_Score.Text = "Punkte: " + Punkte; // Current points
string kontrolle = SQL.GEO_Fragen().Rows[zufall]["Antwort 1"].ToString();
SQL.GEO_Fragen().Rows[zufall]["Gefragt"] = 1; //Changing value of the last column in row "zufall" to "1"
MessageBox.Show(SQL.GEO_Fragen().Rows[zufall]["Gefragt"].ToString()); //Shows "0" instead of "1"
if (rad_Antwort1.Text == kontrolle) // Next question
{
Zufallszahl();
while (Counter <= 10)
{
Counter = Counter + 1;
break;
}
if (Counter > 10)
{
SQL.GEO_Fragen().Reset();
btn_Weiter.Hide(); // After 10 questions back to main menu
lbl_Frage.Hide();
rad_Antwort1.Hide();
rad_Antwort2.Hide();
rad_Antwort3.Hide();
rad_Antwort4.Hide();
lbl_Titel.Show();
lbl_Themen.Show();
rad_Geografie.Show();
rad_Geschichte.Show();
rad_Serien.Show();
rad_Videospiele.Show();
btn_Start.Show();
}
//... more code
내가 시도 많은 다른 것들을, 난 AcceptChanges()
, BeginEdit()
및 EndEdit()
함께 노력했다. 디버깅 목적으로 DataTable과 edit-command를 하나의 메소드에 넣으려고했습니다. 편집은 완벽하게 작동합니다.
대단히 감사합니다! 그것이 효과가있는 것처럼 보인다! 더 빨리 대답하지 못해 미안해, 나는 끝내야 할 것이 많았다. :) – Racer4443
probs, @ Racer4443, 나는 당신이 의미하는 것을 안다;) & 도움이 될 수있어서 기쁩니다 :) – davmos