我加一個ComboBox我的DataGridView如何從我的DataGridView中獲取每個組合框的所有值並將它們添加到DataTable?
DBAccess dba = new DBAccess();
DataTable dt = dba.spGetASTMTable(); // Getting Data from DataBase for Grid
DataTable dtOrders = dba.spGetOrdersList();/Getting Data from DataBase for ComboBox
// Create ComboBox
var cboDbTableColumn = new DataGridViewComboBoxColumn();
cboDbTableColumn.DataSource = dtOrders;
cboDbTableColumn.DataPropertyName = "OrdersID";
cboDbTableColumn.DisplayMember = "Orders";
cboDbTableColumn.HeaderText = "DbTableColumn";
gvASTMOrderMessage.Columns.Add(cboDbTableColumn);
gvASTMOrderMessage.DataSource = dt;
然後我跑我的應用程序和變化的情侶組合框。 我點擊按鈕「保存」,我想獲得所有DataGridView數據的DataTable。據我所知,由於我的ComboBox是DataSource的一部分,我需要遍歷整個Grid並手動將ComboBox的值添加到我的DataTable中。我試圖在這裏執行此步驟:
private void btnSave_Click(object sender, EventArgs e)
{
DataTable data = (DataTable)(gvASTMOrderMessage.DataSource);
data.Columns.Add("DbTableColumn");
for (int i = 0; i < gvASTMOrderMessage.Rows.Count; i++)
{
data.Rows[i]["DbTableColumn"] = Convert.ToString((gvASTMOrderMessage.Rows[i].Cells[0] as DataGridViewComboBoxCell).FormattedValue.ToString());
}
}
但這不起作用。我一直試圖讓
gvASTMOrderMessage.Rows[i].Cells[0].FormattedValue.ToString()
gvASTMOrderMessage.Rows[i].Cells[0].Value.ToString()
gvASTMOrderMessage.Rows[i].Cells[0].EditedFormattedValue.ToString()
但沒有這個工程...
請幫助,如何從我的DataGridView讓每一個組合框的所有值,並將其添加到數據表?
爲什麼不在數據源dt DataTable中添加「DbTableColumn」? –
@xeondev DbTableColumn是DataGridViewComboBoxColumn類型。如果你可以將它添加到數據源中(通過使用我提出的某種「技巧」),DataGridView無論如何都不會顯示正確的信息。您必須將這些特殊列類型「手動」添加到DataGridView。 – varocarbas