обновить сетку данных на основе значения флажка - установите флажок для всех строк и проверьте, был ли выбран какой-либо флажок - PullRequest
0 голосов
/ 12 сентября 2018

Итак, у меня есть DataGridView, в котором есть три столбца, на эту дату и имя пользователя извлекаются из моей базы данных SQL Server. Теперь в первом столбце у нас есть битовое поле, которое отображается как CheckBox в моем конструкторе приложений Windows.

Итак, я хочу, При нажатии кнопки обновления моя программа хочет проверить, был ли установлен какой-либо флажок, если флажок был установлен, то должна сработать логика обновления.

Если флажок не установлен, следует выбросить ошибку.

   public void Update_button_Click(object sender, System.EventArgs e) {


//Check all the checkbox in the first column and if none is selected throw error
            If(boolean(checkbox.Row[0]) == true)  { //This is an example if-else condition code which i expect 

     string msg = String.Format("Row: {0}, Column: {1}",
                 dataGridView1.CurrentCell.Value,
                 dataGridView1.CurrentCell.ColumnIndex);
                MessageBox.Show(msg, "Current Cell");
                dataadapter.Update((DataTable) bindingSource1.DataSource);
                foreach(DataGridViewRow row in dataGridView1.Rows) {
                 if (Convert.ToBoolean(row.Cells[0].Value)) {
                  var myvalue = dataGridView1.Rows[row.Cells[0].RowIndex].Cells[dataGridView1.Columns["dummy_id"].Index].Value.ToString();

                  var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MYConnectionString"].ConnectionString;
                  using(var connection = new SqlConnection(connectionString)) {
                   connection.Open();
                   using(var command = new SqlCommand(@ "[dbo].[SP]", connection)) {
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add("@id", SqlDbType.Int).Value = myvalue;
                    command.ExecuteNonQuery();

                   }
                  }
                 }

                }
                MessageBox.Show("SAVED");
                selected_user_data();

               }
// If no checkbox has been selected throw error.
               Else { 
                Messagebox.show("Please select checkbox")
               }

1 Ответ

0 голосов
/ 12 сентября 2018

Раньше я сталкивался с этой проблемой, мое решение состояло в том, чтобы добавить все элементы GUI (в вашем случае флажки, текстовые поля моего случая), чтобы их было легко перебирать. Затем вы можете проверить их состояние:

List<CheckBox> checkbox_list = new List<CheckBox>();
//proceed to manually add all checkboxes to this list upon program initialization
checkbox_list.Add(checkbox1);
//...
//so on until you are done

bool check = false; //we are looking for at least one true, so start with false
for(int i = 0; i < checkbox_list.Count; i++)
{
    if(checkbox_list[i].Checked == true)
        check = true;
}

if(check == true)
    Console.WriteLine("At least one checkbox is checked.");
else
    Console.WriteLine("No checkboxes checked.");

//use "check" bool to determine whether to update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...