2010-06-23 94 views
1

我有一個C#程序,我正在處理,但我不能讓ComboBoxColumn顯示爲我想要的。C#DataGridView組合框綁定問題

我有兩個表。一個包含價格列表。 (列:PriceID,PartID,Price,MinimumQuantity,CustomerID,ExpiryDate)另一張表,零件列表包含(列:PartID,PartNumber)。什麼

我想要做的是顯示PartNumber在一個ComboBoxColumn與PartID作爲值。但是我想爲每個價格行自動選擇相應的零件編號。

這是否有意義!?

我目前在每一行得到的是價格,數量和到期日期以及ComboBoxColumn,其中部件列表填充了組合框,但未選擇任何值。

請有人可以幫助我這個。

請參閱下面的代碼。

 DbConnection dbConn = new DbConnection(getConnectionStr()); 
     dbConn.execQuery("EXEC RBS_CustomerSpecificPriceListSelect " + customerID + ";", "CustomerPriceList"); 
     dbConn.execQuery("EXEC RBS_PartsSelect;", "Parts"); 

     DataTable dtCustomerPrices = dbConn.getDataTable("CustomerPriceList"); 
     DataTable dtParts = dbConn.getDataTable("Parts"); 

     dgvCustomerPrices.AutoGenerateColumns = false; 
     dgvCustomerPrices.DataSource = dtCustomerPrices; 
     dgvCustomerPrices.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 

     SetupDGVColumns(dtCustomerPrices, dtParts); 

然後生成列。

private void SetupDGVColumns(DataTable dtCustomerPrices, DataTable dtParts) 
    { 
     // Parts Dropdown 
     DataGridViewComboBoxColumn cboPartsColumn = new DataGridViewComboBoxColumn(); 
     cboPartsColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; 
     cboPartsColumn.DataSource = dtParts; 
     cboPartsColumn.HeaderText = "PartNumber"; 
     cboPartsColumn.DisplayMember = "PartNumber"; 
     cboPartsColumn.ValueMember = "PartID"; 
     cboPartsColumn.DataPropertyName = "PartID"; 
     cboPartsColumn.Width = 110; 
     cboPartsColumn.AutoComplete = true; 
     dgvCustomerPrices.Columns.Add(cboPartsColumn); 

     // MinimumQuantity Textbox 
     DataGridViewTextBoxColumn tbcMinimumQuantityColumn = new DataGridViewTextBoxColumn(); 
     tbcMinimumQuantityColumn.DataPropertyName = "MinimumQuantity"; 
     tbcMinimumQuantityColumn.HeaderText = "MinimumQuantity"; 
     tbcMinimumQuantityColumn.ValueType = typeof(double); 
     tbcMinimumQuantityColumn.Width = 140; 
     tbcMinimumQuantityColumn.DefaultCellStyle.Format = "#####0.00"; 
     dgvCustomerPrices.Columns.Add(tbcMinimumQuantityColumn); 

     // Price Textbox 
     DataGridViewTextBoxColumn tbcPriceColumn = new DataGridViewTextBoxColumn(); 
     tbcPriceColumn.DataPropertyName = "Price"; 
     tbcPriceColumn.HeaderText = "Price"; 
     tbcPriceColumn.ValueType = typeof(double); 
     tbcPriceColumn.Width = 100; 
     tbcPriceColumn.DefaultCellStyle.Format = "#####0.00"; 
     dgvCustomerPrices.Columns.Add(tbcPriceColumn); 

     // ExpiryDate Textbox 
     DataGridViewTextBoxColumn tbcExpiryDateColumn = new DataGridViewTextBoxColumn(); 
     tbcExpiryDateColumn.DataPropertyName = "ExpiryDate"; 
     tbcExpiryDateColumn.HeaderText = "ExpiryDate"; 
     tbcExpiryDateColumn.ValueType = typeof(string); 
     tbcExpiryDateColumn.DefaultCellStyle.Format = "d"; 
     dgvCustomerPrices.Columns.Add(tbcExpiryDateColumn); 
    } 
+0

可以肯定的是,這只是Cb列中不起作用的初始選擇?你能改變一行的PartId嗎? – 2010-06-23 12:36:16

+0

是的,我會認爲你可以將兩個表綁定在一起,也許組合框將選擇正確的ID值,因爲它綁定到另一個表。有什麼我失蹤? – ShaunBokenham 2010-06-24 08:28:24

+0

它看起來不錯,這就是爲什麼我問它是否在其他方面的作品。可能在列名或其他東西中顯示錯字。 – 2010-06-24 11:53:24

回答

0

好,所以這是完全白癡的我的一部分。選擇組合列數據的SQL查詢在SELECT子句中沒有相應的行ID。

儘管謝謝大家的幫助!我感到很傻!