2016-08-17 121 views
0

我從Form 1:Products傳遞參數到Form2:ProductEdit。在編輯ProductEdit中的參數後,Products中的datagridview不會刷新。c#datagridview傳遞參數後不刷新

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.ColumnIndex == 0 && e.RowIndex >= 0) 
     { 
      ProductEdit pe = new ProductEdit(dataGridView.SelectedRows[0].Cells[1].Value.ToString(), dataGridView.SelectedRows[0].Cells[2].Value.ToString(), dataGridView.SelectedRows[0].Cells[3].Value.ToString()); 
      pe.Show(dataGridView); 
     } 
    }  

public ProductEdit(string PId, string PName, string PPrice) 
    { 
     InitializeComponent(); 
     txtPId.Text = PId; 
     txtPName.Text = PName; 
     txtPPrice.Text = PPrice; 
    } 

回答

0

有2種方法可以解決這個問題。

  1. 而不是傳入字符串,傳入單元格。將文本框綁定到單元格。然後,所做的編輯將以原始格式顯示,因爲您正在直接修改它。

  2. 當產品編輯正在關閉,寫在文本框的值返回到dataGridView.SelectedRows[0].Cells(xxxx)


的方法1的例子:

ProductEdit pe = new ProductEdit(dataGridView.SelectedRows[0].Cells[1], dataGridView.SelectedRows[0].Cells[2], dataGridView.SelectedRows[0].Cells[3]); 

public ProductEdit(DataGridViewCell PId, DataGridViewCell PName, DataGridViewCell PPrice) 
{ 
    InitializeComponent(); 
    txtPId.DataBindings.Add("Text", PId, "Value"); 
    txtPName.DataBindings.Add("Text", PName, "Value"); 
    txtPPrice.DataBindings.Add("Text", PPrice, "Value"); 
} 
+0

u能解釋更 –

+0

(未測試的)您的產品編輯表單與datagridview完全斷開連接,因爲您所做的只是將每個單元格的字符串內容的副本傳遞給表單。因此,一旦完成編輯,您需要將編輯後的值寫回數據網格。爲此,您需要參考數據需要去的地方,因此我建議將DataGridViewCells添加到您的構造函數中。 – FloatingKiwi