2015-04-22 2 views
1

Как найти cellvaluepresenter на основе ActiveRecord или ActiveCell в infragistics xamdatagrid?Найти редактор внутри активной ячейки (XamDataGrid) infragistics

Я пробовал под кодом, но он дает значение null в указателе значений.

private void grdGrid_RecordActivated(object sender,RecordActivatedEventArgs e) 
    {   

    (grdGrid.ActiveRecord as DataRecord).Cells["fldDescription"].IsActive = true; 

      Cell selectedCell = grdGrid.ActiveCell; 

      CellValuePresenter cvp = CellValuePresenter.FromCell(selectedCell); 

      cvp.Editor.StartEditMode(); 

} 

это связывание

<igDP:UnboundField Name="fldDescription" Label="Description" BindingPath="TaskItemAction.Description" BindingMode="TwoWay"> 
                  <igDP:Field.Settings> 
                   <igDP:FieldSettings CellClickAction="EnterEditModeIfAllowed" EditorStyle="{StaticResource textStyleKey}" EditorType="{x:Type editors:XamTextEditor}" EditAsType="{x:Type sys:String}" 
                 CellWidth="30" CellHeight="30" AllowEdit="True" Width="0.4*" Height="30" > 

                   </igDP:FieldSettings> 
                  </igDP:Field.Settings> 

Так что теперь я хочу найти Активированную запись к этому событию и найти тип редакторов и запустить режим редактирования.

private void GrdTaskItemAction_RecordActivated(object sender, RecordActivatedEventArgs e) 
      { 
    grdGrid.ExecuteCommand(DataPresenterCommands.StartEditMode); 
} 

отлично работает для меня, но он вызывает режим редактирования для ячейки, а не редактор (контроль внутри нее).

Я хочу найти этот редактор внутри активированной ячейки и сделать его доступным для редактирования.

ответ

1

Вы можете напрямую получить ячейку, используя activerecord.

private void grdGrid_RecordActivated(object sender, Infragistics.Windows.DataPresenter.Events.RecordActivatedEventArgs e) 
    { 
     Cell selectedCell = (grdGrid.ActiveRecord as DataRecord).Cells["fldDescription"]; 

     CellValuePresenter cvp = CellValuePresenter.FromCell(selectedCell); 

     cvp.Editor.StartEditMode(); 
    } 
+0

Может ли почтовый код реплицировать проблему ур .. Как и Datamodel, привязка и т. Д. –

+0

Извините, я изменил свой вопрос bcoz внезапно, я заметил, что я не использовал cellvaluepresenter, который я использовал выше, настройку привязки mentiod \ – Saurabhchauhan232

0

Вы можете попробовать от получения его из RecordActivatedEventArgs с использованием метода GetChildCellValuePresenters().

Затем вы должны отфильтровать массив для нужного вам cellValuePresenter.

Редактировать: обновил код, чтобы cet the cellValuePresenters забыл бросить его на DataRecordPresenter. Но, поскольку вы сказали, что ваша проблема другая, я снова рассмотрю ее.

+0

как получить этот метод, когда я пытался написать e.Record.GetChildCellValuePresenters(), он недоступен в событии RecordActivatedEventArgs – Saurabhchauhan232

0

Использование ниже код: (Если у вас уже есть CellValuePresenter)

 CellValuePresenter cvp = new CellValuePresenter(); 

     ValueEditor VE = Infragistics.Windows.Utilities.GetDescendantFromType(cvp, typeof(ValueEditor), true) as ValueEditor; 
     if (VE != null) 
     { 
      VE.IsInEditMode = true; 
     } 

Каждый Editor в Infragistics Lib происходит от ValueEditor, поэтому использовать его в качестве исх к Editor.

Смежные вопросы