更改列的值

时间:2015-09-08 01:33:32

标签: c# sql methods datagridview parameters

我想要更新,如果我调用填充网格的搜索方法,并在其第二和第三列的反转值之后调用Update方法并在SQL Server上更新,则需要更新。

例如:

点击搜索按钮,填充网格:

Jhon 2 3

Snow 4 5

怀特6 7

点击更新按钮,然后再次点击搜索按钮

Jhon 3 2

Snow 5 4

怀特7 6

public void Update(int param_idficha, int param_rgp, int param_quant, double param_peso, string param_date, string param_peixe)
    {
        vsql = "UPDATE cadastro SET PESO = @PESO, QUANTIDADE = @QUANTIDADE WHERE ID_FICHA = @ID_FICHA and PEIXE LIKE @PEIXE";
        SqlCommand objcmd = null;

        if (this.Conectar())
        {
            try
            {
                DateTime dtParam = DateTime.Parse(param_date);
                objcmd = new SqlCommand(vsql, objCon);

                objcmd.Parameters.Add(new SqlParameter("@ID_FICHA", param_idficha));
                objcmd.Parameters.Add(new SqlParameter("@RGP", param_rgp));
                objcmd.Parameters.Add(new SqlParameter("@PEIXE", param_peixe));
                objcmd.Parameters.Add(new SqlParameter("@PESO", param_peso));
                objcmd.Parameters.Add(new SqlParameter("@QUANTIDADE", param_quant));
                objcmd.Parameters.Add(new SqlParameter("@DATA_REGISTRO", dtParam));

                objcmd.ExecuteNonQuery();
            }
            catch
            {
                throw;
            }
            finally
            {
                this.Desconectar();
            }
        }
    }

搜索和填充网格方法:

  private void btn_Search_Click(object sender, EventArgs e)
   {

       if (txtb_idFicha.Text.Length > 0)
       {
           int i = Convert.ToInt32(txtb_idFicha.Text);

           _peixe_list.Clear();
           _peso_list.Clear();
           _quant_list.Clear();


           objSQL.Search_IDFicha(i, _peixe_list, _quant_list, _peso_list);

           dataGridView1.Rows.Clear();

           for (int j = 0; j < _peixe_list.Count; j++)
           {
               string[] rows = { _peixe_list[j], _quant_list[j], _peso_list[j] };

               dataGridView1.Rows.Add(rows);
           }
       }

       else
           MessageBox.Show("Preencha o campo N° Ficha", " ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);



   }

更新方法:

private void btn_Update_Click(object sender, EventArgs e)
   {
       int param_id = Convert.ToInt32(txtb_idFicha.Text);
       int param_rgp = Convert.ToInt32(txtb_RGP.Text);

       string DateTimesql = myDateTime.ToString("dd-MM-yyyy");

       _peixe_list.Clear();
       _quant_list.Clear();
       _peso_list.Clear();

       foreach (DataGridViewRow row in dataGridView1.Rows)
       {

           if (row.Cells.Count >= 2 && row.Cells[0].Value != null)
           {
               _peixe_list.Add(row.Cells[0].Value.ToString());
               _peso_list.Add(row.Cells[1].Value.ToString());
               _quant_list.Add(row.Cells[2].Value.ToString());
           }

       }


       for (int x = 0; x < _peixe_list.Count; x++)
              objSQL.Update(param_id, param_rgp, Convert.ToInt32(_quant_list[x]), Convert.ToDouble(_peso_list[x]), DateTimesql, _peixe_list[x]);

   }

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以执行以下操作来完成任务。

我假设搜索按钮填充网格运行正常。比更新

而不是

objSQL.Search_IDFicha(i, _peixe_list, _quant_list, _peso_list);
dataGridView1.Rows.Clear();
for (int j = 0; j < _peixe_list.Count; j++)
{
   string[] rows = { _peixe_list[j], _peso_list[j],  _quant_list[j] };
   dataGridView1.Rows.Add(rows);
}

你可以做同样的事情,你在搜索中做的但是

的变化很小
for (int x = 0; x < _peixe_list.Count; x++)
    objSQL.Update(param_id, param_rgp, Convert.ToDouble(_peso_list[x]), Convert.ToInt32(_quant_list[x]), DateTimesql, _peixe_list[x]);

这里我们重新排序了第二和第三列,为了保存,我们将再次遵循相同的更新程序

=>