Получить отображаемое значение из выпадающего списка в radgridview - PullRequest
3 голосов
/ 27 октября 2009

Я использую Telerik 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);

Это прекрасно работает для правильного отображения данных в виде сетки, но я также хотел бы показать элемент отображения текущей строки в отдельной части моей формы при двойном щелчке по ячейке.

Пример:

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

К сожалению, при этом будет отображаться только ValueMember для столбца (т. Е. 1 вместо Фреда; 2 вместо Боба), а элемент управления не содержит определения свойств «DisplayMember» или «Text» (где я ожидал найти значение, которое фактически отображается на экране).

Есть идеи на этот счет?

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Это должно работать:

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;
            }
        }
    }
}
1 голос
/ 20 января 2010

Посмотрите на документацию для CellDoubleClick .Мне кажется, что вы можете получить нужный текст из e.Value

1 голос
/ 27 октября 2009

Вам нужно получить 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);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...