Откройте дочернее окно по кнопке ссылки, нажмите на кнопку в DevExpress GridControl и передайте значения - PullRequest
0 голосов
/ 03 марта 2012

Я делаю приложение Silverlight 4.

У меня DevExpress GridControl с 4 столбцами. Я поместил HyperlinkButton в качестве шаблона отображения для одного из столбцов, как показано ниже. Источник элемента gridcontrol имеет привязку к коду.

<dxg:GridControl Name="grid" Height="294" Width="634">
    <dxg:GridControl.Columns>
        <dxg:GridColumn FieldName="Name" />
        <dxg:GridColumn FieldName="Id_no" />
        <dxg:GridColumn FieldName="Type" />
        <dxg:GridColumn Header="View Details">
            <dxg:GridColumn.DisplayTemplate>
                <ControlTemplate>
                    <HyperlinkButton Click="HyperlinkButton_Click"/>
                </ControlTemplate>
            </dxg:GridColumn.DisplayTemplate>
        </dxg:GridColumn>
    </dxg:GridControl.Columns>

В обработчике событий Click HyperlinkButton я хочу открыть дочернее окно и передать ему подробности (Имя, Идентификатор, Тип) этой конкретной строки .

void HyperlinkButton_Click(object sender, RoutedEventArgs e) {
    Childwin win_ch = new Childwin();
    win_ch.Show();
    // pass the row values to the child window???
}

Не знаю, как получить значения строк gridcontrol.

Есть идеи? Есть ли лучший метод?

1 Ответ

1 голос
/ 03 марта 2012

Вы можете получить дескриптор строки таблицы, содержащей гиперссылку, с помощью метода DataViewBase.GetRowHandleByTreeElement . Затем используйте метод GridControl.GetRow для получения объекта строки.

void HyperlinkButton_Click(object sender, RoutedEventArgs e) {
    int rowHandle = tableView3.GetRowHandleByTreeElement((DependencyObject)sender);
    object row = gridControl1.GetRow(rowHandle);
    // then use the row object
}

Также просмотрите следующие справочные статьи:

  1. Получение ручек строк
  2. Идентификация строк
...