2011-05-02 36 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 
     } 
    } 

Mã này hoạt động hoàn hảo nhưng chỉ cho một giá trị trong combobox ... Tôi cần các giá trị khác nhau trong các hàng khác nhau cho combobox. Làm thế nào tôi có thể làm điều đó? Ví dụ khi trong sản phẩm cột 2 được thay đổi, tôi cần nó để thay đổi giá trị của cột 5 là combobox với giá bán. Bất kỳ trợ giúp nào sẽ được đánh giá cao, tôi hầu như không có giải pháp cho điều này trong tâm trí của tôi. Cảm ơn.Giá trị ComboBox khác nhau trong DataGridView trong các hàng khác nhau

Trả lời

7

Tôi không chắc chắn những gì bạn muốn giả định rằng bạn muốn để ràng buộc giá trị khác nhau chèo khôn ngoan cho cột combobox Trong trường hợp đó nếu bạn có thể xác định tình trạng hàng sử dụng khôn ngoan này

(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"; 

này sẽ thiết lập DataSource cho ô cụ thể đó thay vì Cột mà bạn hiện đang làm.

Hy vọng điều này sẽ hữu ích.

+0

Vâng, đó là những gì tôi muốn, và những gì tôi đã nhầm lẫn .. cảm ơn rất nhiều vì đã cho tôi hướng đi. p.s. Điều này vẫn còn cho tôi một lỗi, có thể bởi vì datamember và valuemember không được thiết lập. Làm thế nào tôi có thể đặt chúng vào ô đó? – dex

+0

Nó nói giá trị DataGridViewComboBoxCell không hợp lệ. – dex

+0

Đã chỉnh sửa để thiết lập các thành viên. – V4Vendetta

0

Tôi nghĩ bạn nên xử lý CellParsing sự kiện của bạn datagridview và khi ô sản phẩm được thay đổi và người dùng điều hướng đến một ô khác, hãy điền vào hộp kết hợp với kết quả mong muốn của bạn.

+0

CellEndEdit gần như giống nhau, vì vậy tôi nghĩ rằng nó sẽ không tạo ra sự khác biệt lớn, bất kỳ cách nào cảm ơn câu trả lời. – dex

+0

Bạn có thể sử dụng e.value từ sự kiện 'cellparsing' để tìm ra sản phẩm nào đã được chọn và thực hiện yêu cầu db dựa trên nó và sau đó liên kết combobox của hàng đó với kết quả mới được tìm nạp. Tôi không thể kiểm tra nó bây giờ nhưng tôi nghĩ rằng nó sẽ làm việc. – Kamyar

Các vấn đề liên quan