2009-10-27 5 views
3

Я использую RadGridView от Telerik для отображения некоторых данных. Один из столбцов в этом GridView является выпадающей, который заполняется следующим образом:Получить значение отображения из combobox в 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 "или" Текст "(где я ожидаю найти значение, которое фактически отображается на экране).

Любые идеи по этому вопросу?

ответ

1

Вам необходимо получить GridViewComboBoxColumn для этой ячейки. Тогда доступ к свойству DisplayMember

Edit: Обновлено Sample

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

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; 
      } 
     } 
    } 
} 
Смежные вопросы