Флажок для выбора или отмены выбора всех элементов столбца SQL

#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