2012-11-16 72 views
9

如何獲取Combobox選定的項目文本它是在DataGridView中? 我曾嘗試使用下面的代碼嘗試:如何獲取Datagridview Combobox選定項目的文本?

dataGridView1.Rows[1].Cells[1].Value.ToString() 

但是,這給這個細胞,不ComboBox中選定項文本關聯的值。 我也試過這個:

DataGridViewComboBoxCell cell = dataGridView1[1,1] as DataGridViewComboBoxCell; 
string value = cell.Value.ToString(); 

但是,這也沒有幫助。

我將不勝感激您的幫助。提前致謝!

編輯:

比方說,我們有文字組合框爲NoYes和值分別爲0和1。當組合框被更改時,我想要的文字是YesNo。但是我得到的是使用上面代碼的值0/1。希望能夠說清楚。

UPDATE:

好了,我一直在這個問題上和大量的努力後,並與我的同胞成員的幫助下,我已經能夠解決這個問題,並獲得所需的解決方案:

這裏的解決方案:

string SelectedText = Convert.ToString(dataGridView1.Rows[0].Cells[1].FormattedValue.ToString()); 
+0

請檢查[**'Link' **](http://stackoverflow.com/a/6051032/1577396)並回復我。 –

+0

正如@Mr_Green所說 - 目前尚不清楚您要找什麼。你能編輯這個問題來說明你的期望和實際結果是什麼嗎? – Bobson

回答

15

若要選擇的值,並在DataGridView中選擇組合框的文本嘗試下面的代碼

string SelectedText = Convert.ToString((DataGridView1.Rows[0].Cells["dgcombocell"] as DataGridViewComboBoxCell).FormattedValue.ToString()); 
int SelectedVal = Convert.ToInt32(DataGridView1.Rows[0].Cells["dgcombocell"].Value); 
+0

我不認爲你真的需要'Convert.ToString()'在第一種情況下,因爲你調用'的ToString()'在FormattedValue的。雖然很有用。 – Bobson

+0

@Bobson Convert.ToString()處理空值,如果我只寫.Tostring()並且有空值,它會在運行時引發異常。 :) –

+1

這真是一個很好的觀點。但那是否意味着'.ToString()'是冗餘位? – Bobson

-1

你可以試試這個: -

dataGridView1.CurrentRow.Cells[0].Value.ToString(); 

索引您需要查看的單元格列,以您的ComboBoxColumn的索引爲準。

+0

這並沒有提供與OP有什麼不同 - 他已經可以獲得正確的單元格的「值」。 – Bobson

+0

是@Bobson你是絕對正確的。我已經獲得了正確的細胞價值。我只需要獲得'combobox selected text'。 –

2

我設法這樣便可該字符串值出細胞的:算出這個是使用調試器,並期待到dgvcmdcell對象

DataGridViewComboBoxCell dgvcmbcell = dataGridView1[1, 0] as DataGridViewComboBoxCell; 
String text = dgvcmbcell.EditedFormattedValue.ToString(); 

最簡單的方法。在這裏你會找到可擴展的節點「base」。展開它,只需查看它,你就會找到你需要的任何信息。

+0

感謝@Wozzec的回覆,但解決方案並不適合我,因爲我想。作爲組合框中的TEXT,我有「是」和「否」。我能夠得到文本'是',但是當我將組合框值更改爲'否'時,它仍然將值顯示爲'是',它應該是'否'作爲所選項目文本。我希望你知道我的問題在這裏。 –

+0

如何將您的物品添加到組合框?我創建了一個包含變量文本和值的類。然後,我將combobox列設置爲使用帶有textvalue類列表的綁定源作爲源。所以對我來說,當我更換組合框項目時,我得到TEXT「No」。 – WozzeC

+0

我將動態組合框列添加到網格中,並將DataTable中的數據作爲它的列表加載。 –

0

要訪問的DataGridView當前選定的文本,你需要到ComboBox列的CurrencyManager參考。 CurrencyManager與金錢無關,而是管理列與數據源之間的綁定。 CurrencyManager可以告訴你什麼目前選擇的組合框是。

德代碼:

CurrencyManager cm = (CurrencyManager)DataGridView1.BindingContext[((System.Windows.Forms.DataGridViewComboBoxColumn)DataGridView1.Columns[0]).DataSource]; 

注:沒有必要到列轉換爲一個組合框,我只是做是你,我是路過什麼樣的列中顯示我使用的索引0但使用任何索引都是您的ComboBox列的實際索引。

現在使用貨幣管理器,您可以訪問該列的數據網格的當前選擇(因爲這是您傳入的列)。

cm.Current; //returns the current selection whatever that is 

所以在我的情況下,組合框列的數據源是一個名爲Choice類,選擇看起來是這樣的:

public class Choice 
    { 
      public string Text 
      { 
       get; 
       set; 
      } 
    } 

當我訪問cm.Current屬性將返回的一個實例我現在可以訪問我選擇的類的Text屬性,以查看選定的值。顯然你必須適應你的特殊情況。我希望這有幫助。

相關問題