2009-10-27 40 views
3

我正在使用Telerik的RadGridView來顯示一些數據。人在這個GridView中列的是一個組合框,其中填充像這樣:在radgridview中從組合框中獲取顯示值

DataTable dtContractorName = A133DB.GetContractorsForCombo(true); 
GridViewComboBoxColumn contractorNameColumn = new GridViewComboBoxColumn(); 
contractorNameColumn.UniqueName = "ContractorID"; 
contractorNameColumn.HeaderText = "Contractor"; 
contractorNameColumn.DataSource = dtContractorName; 
contractorNameColumn.ValueMember = "ContractorID"; 
contractorNameColumn.DisplayMember = "ContractorName"; 
contractorNameColumn.FieldName = "ContractorID"; 
radGvReviews.Columns.Add(contractorNameColumn); 

這只是正常的在GridView正確顯示數據,但我想也顯示當前行的將DisplayMember在單元格被雙擊時我的表單的另一部分。

實施例:

private void radGvReviews_CellDoubleClick(object sender, GridViewCellEventArgs e) 
{ 
    MessageBox.Show(e.Row.Cells["ContractorID"].Value.ToString()); 
} 

不幸的是,這將只顯示ValueMember的列(即1,而不是佛瑞德; 2,而不是鮑勃),並且控制不包含定義爲「 DisplayMember「或」Text「屬性(我期望找到實際顯示在屏幕上的值)。

對此有何意見?

回答

1

您需要獲取該單元格的GridViewComboBoxColumn。然後訪問DisplayMember屬性

編輯:更新的樣本

private void radGvReviews_CellDoubleClick(object sender, GridViewCellEventArgs e) 
{ 
    GridViewComboBoxColumn combo = radGvReviews.Columns[e.ColumnIndex] as GridViewComboBoxColumn; 
    if (combo != null) 
    { 
       MessageBox.Show(combo.DisplayMember); 
    } 
} 
+0

邁克爾,我沒有提到我以前嘗試過您的代碼示例。嘗試時,我通過參考轉換等收到「無法將類型'Telerik.WinControls.UI.GridViewCellInfo'轉換爲'Telerik.WinControls.UI.GridViewComboBoxColumn'等。」還有其他建議嗎? – Sesame 2009-10-27 16:25:06

2

得到你想要的文字這應該工作:

void radGridView1_CellDoubleClick(object sender, GridViewCellEventArgs e) 
{ 
    GridViewComboBoxColumn comboCol = e.Column as GridViewComboBoxColumn; 
    if (comboCol != null) 
    { 
     DataTable source = comboCol.DataSource as DataTable; 
     foreach (DataRow row in source.Rows) 
     { 
      if (row["ContractorID"].Equals(e.Value)) 
      { 
       MessageBox.Show(row["ContractorName"].ToString()); 
       return; 
      } 
     } 
    } 
}