من نظرم اینه که گذاشتن چک لیست باکس و سلکت زدن خیلی سخت تر (و البته غیر بهینه بودن) هست تا یک نصفه خط کد.
با سلام مجدد نه من هم این رو به روش شما انجام دادم فقط در فرم سوالات بجای گرید از چکلیست باکس استفاده کردم که تفاوت چندانی نداشت ولی در یک جا از دیتا ریدر استفاده کردم
کدهای این فرم
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace MYAZMOON
{
public partial class frmdefineqestions : Form
{
private readonly SqlConnection connection;
private SqlDataAdapter dataAdapter;
private DataTable dt;
public frmdefineqestions()
{
connection =
new SqlConnection(
@"Data Source=.\SQLEXPRESS;AttachDbFilename=
|DataDirectory|\DBAZMOON.mdf;Integrated Security=True;User Instance=True");
InitializeComponent();
}
private void frmdefineqestions_Load(object sender, EventArgs e)
{
comboBox1loadddata();
comboBox2.SelectedIndex = 0;
loadqustintxt();
}
private void loadqustintxt()
{
dt = new DataTable();
dataAdapter = new SqlDataAdapter("qustiontex", connection);
dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
dataAdapter.SelectCommand.Parameters.AddWithValue( "@GROUPID",((DataRowView) comboBox1.SelectedItem)["GROUPID"]);
dataAdapter.Fill(dt);
checkedListBox1.DataSource = dt;
checkedListBox1.DisplayMember = "QUSETIONTEXT";
checkedListBox1.ValueMember = "QUSTIONID";
}
private void comboBox1loadddata()
{
dt = new DataTable();
dataAdapter = new SqlDataAdapter("loaddall", connection);
dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
dataAdapter.Fill(dt);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "GROUPNAME";
comboBox1.ValueMember = "GROUPID";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
loadqustintxt();
}
private void addqustion_Click(object sender, EventArgs e)
{
var command = new SqlCommand("addqusetion", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@QUSETIONTEXT", textBox1.Text);
command.Parameters.AddWithValue("@CASE1", textBox2.Text);
command.Parameters.AddWithValue("@CASE2", textBox3.Text);
command.Parameters.AddWithValue("@CASE3", textBox4.Text);
command.Parameters.AddWithValue("@CASE4", textBox5.Text);
command.Parameters.AddWithValue("@ANSWER", comboBox2.Text);
command.Parameters.AddWithValue("@GROUPID", comboBox1.SelectedValue);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
frmdefineqestions_Load(null, null);
MessageBox.Show("سوال درج شد");
cleratxtbox();
}
private void cleratxtbox()
{
foreach (Control c in groupBox1.Controls)
{
if (c is TextBox)
{
(c as TextBox).Text = string.Empty;
}
}
}
private void btndelete_Click(object sender, EventArgs e)
{
if (checkedListBox1.Items.Count > 0 && checkedListBox1.GetItemChecked(checkedListBox1.Sel ectedIndex))
{
var command = new SqlCommand("DELETequstion", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@id", checkedListBox1.SelectedValue);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
frmdefineqestions_Load(null, null);
MessageBox.Show("حذف شد");
}
}
private void checkedListBox1_DoubleClick(object sender, EventArgs e)
{
if (checkedListBox1.Items.Count > 0 && checkedListBox1.GetItemChecked(checkedListBox1.Sel ectedIndex))
{
SqlDataReader reader;
var command = new SqlCommand("sendqestionforupdate", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@id", checkedListBox1.SelectedValue);
connection.Open();
reader = command.ExecuteReader();
try
{
if (reader.Read())
{
textBox1.Text = reader["QUSETIONTEXT"].ToString();
textBox2.Text = reader["CASE1"].ToString();
textBox3.Text = reader["CASE2"].ToString();
textBox4.Text = reader["CASE3"].ToString();
textBox5.Text = reader["CASE4"].ToString();
}
connection.Close();
reader.Close();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
}
private void btnedit_Click(object sender, EventArgs e)
{
if (checkedListBox1.Items.Count > 0 && checkedListBox1.GetItemChecked(checkedListBox1.Sel ectedIndex))
{
SqlDataReader reader;
var command = new SqlCommand("sendqestionforupdate", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@id", checkedListBox1.SelectedValue);
connection.Open();
reader = command.ExecuteReader();
try
{
if (reader.Read())
{
textBox1.Text = reader["QUSETIONTEXT"].ToString();
textBox2.Text = reader["CASE1"].ToString();
textBox3.Text = reader["CASE2"].ToString();
textBox4.Text = reader["CASE3"].ToString();
textBox5.Text = reader["CASE4"].ToString();
comboBox2.Text = reader["ANSWER"].ToString();
}
connection.Close();
reader.Close();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
}
private void btnsaveedit_Click(object sender, EventArgs e)
{
var command = new SqlCommand("updatetblqusetion", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@qustinoid", checkedListBox1.SelectedValue);
command.Parameters.AddWithValue("@QUSETIONTEXT", textBox1.Text);
command.Parameters.AddWithValue("@CASE1", textBox2.Text);
command.Parameters.AddWithValue("@CASE2", textBox3.Text);
command.Parameters.AddWithValue("@CASE3", textBox4.Text);
command.Parameters.AddWithValue("@CASE4", textBox5.Text);
command.Parameters.AddWithValue("@ANSWER", comboBox2.Text);
command.Parameters.AddWithValue("@GROUPID", comboBox1.SelectedValue);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
frmdefineqestions_Load(null, null);
MessageBox.Show("سوال ویرایش شد");
cleratxtbox();
}
}
}