#c# #sql #wpf
#c# #sql #wpf
Вопрос:
У меня есть столбец SQL типа bit (boolean), я могу проверить или снять некоторые элементы по своему выбору из таблицы данных, где показаны эти флажки. Теперь я хочу иметь один флажок для установки или отмены всех флажков в таблице данных. Я пришел к этому коду:
private void Chk_All_Checked(object sender, RoutedEventArgs e)
{
sqliteCon.Open();
if (sqliteCon.State == System.Data.ConnectionState.Open)
{
CORRENTE
string q = @"UPDATE tabL
SET selection = (CASE
WHEN (SELECT selection FROM tabL ) = 0
THEN 1
ELSE 0
END)
WHERE ?????????????????????";
SqlCommand cmd = new SqlCommand(q, sqliteCon);
cmd.ExecuteNonQuery();
MessageBox.Show("All Items Checked");
}
sqliteCon.Close();
}
«ГДЕ idL=@CURRENT» неверно
Вот еще одна попытка, но она также не работает:
private void Chk_All_Checked(object sender, RoutedEventArgs e)
{
sqliteCon.Open();
if (sqliteCon.State == System.Data.ConnectionState.Open)
{
string q = @"UPDATE tabL
SET selection = 1";
SqlCommand cmd = new SqlCommand(q, sqliteCon);
cmd.ExecuteNonQuery();
MessageBox.Show("All Items Checked");
string q2 = @"UPDATE tabL
SET selection = 0";
SqlCommand cmd2 = new SqlCommand(q2, sqliteCon);
cmd2.ExecuteNonQuery();
MessageBox.Show("All Items DeChecked");
}
sqliteCon.Close();
}
Комментарии:
1. Вы никогда не добавляете
@CURRENT
параметр в свою инструкцию SQL.2. мне не нужно знать точное положение строки @CURRENT, потому что я должен проверить или снять их все, установив для них значение 0 или для всех значение 1
3. Я думаю, вы неправильно поняли. Вам нужно добавить SqlParameter в команду.
4. я знаю, но не знаю, какие параметры добавить
5. только флажок для установки всего столбца ‘selection’ таблицы ‘tabList’ равным 1, если установлен флажок, и 0, если снят флажок, что непонятно? извините, но я не понимаю проблему
Ответ №1:
378 просмотров 0 решений, но я нашел одно самостоятельно, у объекта chkbox есть два обработчика событий, один для checked и один для deceked.
private void Chk_All_Checked(object sender, RoutedEventArgs e)
{
sqliteCon.Open();
if (sqliteCon.State == System.Data.ConnectionState.Open)
{
if (chk_All.IsChecked == true) {
string q = @"UPDATE tabList
SET selection = 1";
SqlCommand cmd = new SqlCommand(q, sqliteCon);
cmd.ExecuteNonQuery();
MessageBox.Show("All Items Checked");
}
}
sqliteCon.Close();
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
sqliteCon.Open();
if (sqliteCon.State == System.Data.ConnectionState.Open)
{
if (chk_All.IsChecked == false)
{
string q2 = @"UPDATE tabList
SET selection = 0";
SqlCommand cmd2 = new SqlCommand(q2, sqliteCon);
cmd2.ExecuteNonQuery();
MessageBox.Show("All Items DeChecked");
}
}
sqliteCon.Close();
}
Ответ №2:
Используйте следующий код:
private void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 amp;amp; e.ColumnIndex == 0)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Index == e.RowIndex)
{
row.Cells["checkBoxColumn"].Value =
!Convert.ToBoolean(row.Cells["checkBoxColumn"].EditedFormattedValue);
}
else
{
row.Cells["checkBoxColumn"].Value = false;
}
}
}
}
Комментарии:
1. мне нужно установить или снять их все одним щелчком мыши с одного отдельного флажка, созданного для этого (Chk_All)
2. datagrdiview из Windows form
3. Добро пожаловать в stackoverflow. Пожалуйста, добавьте краткое объяснение того, как это решает проблему.
4. спасибо, учитывая, что DataGridView не из WPF