2011-05-02 56 views
5
private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
    { 
     int MaxRows = dgv.Rows.Count; 

     for (int i = 0; i < MaxRows-1; i++) 
     {     
      SqlDataAdapter da = new SqlDataAdapter("SELECT CAST(originalPrice * " + (1.00 + (float.Parse(txtMarkUp.Text)/100.00)).ToString() + " * " + (1.00 + (float.Parse(dgv.Rows[i].Cells[4].Value.ToString())/100.00)).ToString() + " AS decimal (8,2)) AS sellingPrice FROM Warehouse WHERE barcode = '" + Convert.ToString(dgv.Rows[i].Cells[2].Value) + "'", conn); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 

      DataGridViewComboBoxColumn sellingPrice = dgv.Columns["sellingPrice"] as DataGridViewComboBoxColumn; 

      sellingPrice.DataSource = dt; 
      sellingPrice.ValueMember = "sellingPrice"; 
      sellingPrice.DisplayMember = "sellingPrice"; 

      dgv.Rows[i].Cells[5].Value = dt.Rows[0].ItemArray.GetValue(0); 
      dgv.Rows[i].Cells[4].Value = dt.Rows[0].ItemArray.GetValue(2).ToString(); //percent of tax for that category of product 
     } 
    } 

Este código funciona perfectamente pero solo para un valor en el cuadro combinado ... Necesito valores diferentes en filas diferentes para el cuadro combinado. ¿Cómo puedo hacer eso? En el ejemplo cuando en la columna 2 se cambia el producto, necesito que cambie los valores de la columna 5, que es el combobox con los precios de venta. Cualquier ayuda sería apreciada, casi no tengo una solución para esto en mi mente. Gracias.Diferentes valores de ComboBox en DataGridView en filas diferentes

Respuesta

7

no estoy seguro de lo que quiere el supuesto de que desea enlazar diferentes valores de fila conveniente para la columna de cuadro combinado en ese caso si se puede determinar la fila condición de uso racional de este

(dgv.Rows[i].Cells[5] as DataGridViewComboBoxCell).DataSource = dt; 
(dgv.Rows[i].Cells[5] as DataGridViewComboBoxCell).ValueMember = "sellingPrice"; 
(dgv.Rows[i].Cells[5] as DataGridViewComboBoxCell).DisplayMember = "sellingPrice"; 

Esto establecerá el DataSource para esa celda en particular en lugar de la Columna que está haciendo actualmente.

Espero que esto ayude.

+0

Sí, eso es lo que quiero, y lo que confundí ... muchas gracias por darme la dirección. p.s. Esto todavía me está dando un error, tal vez porque el miembro de datos y el miembro de valor no están configurados. ¿Cómo puedo configurarlos para esa celda? – dex

+0

Dice que el valor de DataGridViewComboBoxCell no es válido. – dex

+0

Editado para configurar los miembros. – V4Vendetta

0

Creo que debe manejar el evento CellParsing datagridview y cuando la celda del producto se cambia y el usuario navega a otra celda, rellene el cuadro combinado con los resultados deseados.

+0

CellEndEdit es casi lo mismo, por lo que creo que no hará una gran diferencia, de todos modos, gracias por la respuesta. – dex

+0

Puede usar el valor e.value del evento 'cellparsing' para averiguar qué producto se ha seleccionado y hacer la solicitud de base de datos basada en él y luego vincular el cuadro combinado de esa fila al resultado recién obtenido. No puedo probarlo ahora, pero creo que debería funcionar. – Kamyar

Cuestiones relacionadas