데이터베이스 값을 양식의 라디오 단추에 바인딩하는 데 문제가 있습니다. 나는 퀴즈를 가지고 있으며, 데이터베이스에 올바른 대답을위한 칼럼뿐만 아니라 각각의 가능한 대답에 대한 칼럼을 가지고 있습니다.라디오 단추 바인딩 문제
그러나 '정답'열의 값이 항상 첫 번째 라디오 버튼의 값과 같지 않더라도 올바른 답은 항상 첫 번째 라디오 버튼입니다. . 대신 questionNumber 변수의 경우 RecordCount 변수를 증가 계속 같은
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.Sql;
using System.Data.SqlClient;
namespace Quiz_Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
String chosenAnswer, correctAnswer;
DataTable table;
int questionNumber = 0;
int correctAnswers = 0;
private void Form1_Load(object sender, EventArgs e)
{
string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\QuizQuestions.accdb";
OleDbConnection conGet = new OleDbConnection(cnString);
OleDbCommand cmdGet = new OleDbCommand();
conGet.Open();
cmdGet.CommandType = CommandType.Text;
cmdGet.Connection = conGet;
cmdGet.CommandText = "SELECT * FROM QuizQuestions ORDER BY rnd()";
OleDbDataReader reader = cmdGet.ExecuteReader();
table = new DataTable();
table.Load(reader);
int recordCount = table.Rows.Count;
foreach (DataRow row in table.Rows)
{
labelQuestion.Text = table.Rows[questionNumber]["Question"].ToString();
radioButton1.Text = table.Rows[questionNumber]["Answer 1"].ToString();
radioButton2.Text = table.Rows[questionNumber]["Answer 2"].ToString();
radioButton3.Text = table.Rows[questionNumber]["Answer 3"].ToString();
radioButton4.Text = table.Rows[questionNumber]["Answer 4"].ToString();
correctAnswer = table.Rows[questionNumber]["Correct Answer"].ToString();
recordCount++;
}
conGet.Close();
}
private void btnGoToNextOne_Click(object sender, EventArgs e)
{
String cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\QuizQuestions.accdb";
OleDbConnection conGet = new OleDbConnection(cnString);
OleDbCommand cmdGet = new OleDbCommand();
int recordCount = table.Rows.Count;
{
conGet.Open();
cmdGet.CommandType = CommandType.Text;
cmdGet.Connection = conGet;
cmdGet.CommandText = "SELECT * FROM QuizQuestions ORDER BY rnd()"; // select all columns in all rows
OleDbDataReader reader = cmdGet.ExecuteReader();
reader.Read();
if (questionNumber < recordCount)
{
if (radioButton1.Checked)
{
chosenAnswer = reader["Answer 1"].ToString();
}
else if (radioButton2.Checked)
{
chosenAnswer = reader["Answer 2"].ToString();
}
else if (radioButton3.Checked)
{
chosenAnswer = reader["Answer 3"].ToString();
}
else if (radioButton4.Checked)
{
chosenAnswer = reader["Answer 4"].ToString();
}
if (questionNumber < recordCount)
{
if (chosenAnswer == reader["Correct Answer"].ToString())
{
labelQuestion.Text = table.Rows[questionNumber]["Question"].ToString();
radioButton1.Text = table.Rows[questionNumber]["Answer 1"].ToString();
radioButton2.Text = table.Rows[questionNumber]["Answer 2"].ToString();
radioButton3.Text = table.Rows[questionNumber]["Answer 3"].ToString();
radioButton4.Text = table.Rows[questionNumber]["Answer 4"].ToString();
correctAnswer = table.Rows[questionNumber]["Correct Answer"].ToString();
questionNumber++;
correctAnswers++;
}
else
{
MessageBox.Show("This is incorrect");
}
}
recordCount++;
}
else
{
MessageBox.Show("You have finished the test. You have " + questionNumber + " answers correct");
}
}
}
}
}
당신은 바인딩 또는 라디오 버튼의 체크 값을 설정하는 어디 코드에서 볼 수 없습니다. 당신은 그것이 사실인지를 확인하고 있습니다 만, 나는 당신이 그것을 어디에 놓고 있는지 보지 못합니다. – LarsTech
안녕하세요, 그건 내 코드 전부입니다. 제발 좀 더 자세히 설명해 주시겠습니까? – user612041