【问题标题】:CheckBox to select or deselect all the items of a column SQLCheckBox 选择或取消选择一列 SQL 的所有项目
【发布时间】:2019-04-01 11:04:37
【问题描述】:

我有一个位(布尔)类型的 SQL 列,我可以从显示这些复选框的数据网格中选中或取消选中我选择的一些项目。现在我想要一个复选框来选择或取消选择数据网格中的所有复选框。我已经找到了这个代码:

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();
}

“WHERE 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();
}

【问题讨论】:

  • 您永远不会将@CURRENT 参数添加到您的SQL 语句中。
  • 我不需要知道@CURRENT行的确切位置,因为我必须选中或取消选中所有这些,将它们全部设置为0或全部设置为1
  • 我想你误会了。你 need to add a SqlParameter 给命令。
  • 我知道但知道要添加哪些参数
  • 只有一个复选框,如果选中,则将表“tabList”的所有列“选择”设置为 1,如果未选中,则设置为 0,有什么不清楚的地方?抱歉,我不明白这个问题

标签: c# sql wpf


【解决方案1】:

378 浏览 0 个解决方案,但我自己找到了一个 chkbox 对象有两个事件处理程序,一个用于检查,一个用于 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 && 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;
                }
            }
        }
    }
    

    【讨论】:

    • 我需要通过单击一个单独的复选框来选中或取消选中它们(Chk_All)
    • datagrdiview 来自 windows 窗体
    • 欢迎来到stackoverflow。请简要说明这是如何解决问题的。
    • 谢谢,考虑到 DataGridView 不是来自 WPF
    猜你喜欢
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多