2012-11-27 1 views
2

AddNewRecord 행에 값을 입력하고 XamDataGrid의 행 외부를 클릭하면 해당 행이 컬렉션에 추가 된 것으로 보입니다.AddNewRecord XamDataGrid

마우스 클릭으로 인해 새 행이 컬렉션에 추가되지 않게하려면 어떻게해야합니까?

는 좋은 말 AddNewRecord의 도움

+0

모든 Infragistics의 전문가 (들), 내가 도와주세요 아무도 도울 수 있다면 나는 감사 진심 것이다 – user977606

+0

을 공유하십시오 나 이걸로 – user977606

+0

의 + 아이콘을 클릭하여, 새 행을 추가 할 생각 – user977606

답변

2

클릭 외부는 기록에 편집 모드를 종료하고 변경 사항이 있다면 그들은 새로운 레코드가 추가 의미 그 시간에 최선을 다하고 있습니다. 처리 당신이 commmited 할 만 기록 할 수 있도록보고 된 경우는 그리드에 다른 레코드를 클릭하여 키를하지 입력 누르면, 당신은 아래로 마우스 왼쪽 버튼을 설정하려면 다음 논리를 사용할 수 있습니다

private bool editingAddNewRecord = false; 
void XamDataGrid1_EditModeEnded(object sender, Infragistics.Windows.DataPresenter.Events.EditModeEndedEventArgs e) 
{ 
    this.editingAddNewRecord = false; 
} 

void XamDataGrid1_EditModeStarted(object sender, Infragistics.Windows.DataPresenter.Events.EditModeStartedEventArgs e) 
{ 
    this.editingAddNewRecord = e.Cell.Record.IsAddRecord; 
} 

void XamDataGrid1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    if (editingAddNewRecord) 
    { 
     DataRecordPresenter drp = Infragistics.Windows.Utilities.GetAncestorFromType(e.OriginalSource as DependencyObject, typeof(DataRecordPresenter), true) as DataRecordPresenter; 
     if (!(drp != null && drp.IsAddRecord)) 
     { 
      e.Handled = true; 
     } 
    }   
} 
+0

좋은 대답, 고마워. – MikeMalter

0

답장을 보내 주셔서 감사합니다 @ alhalama!

오른쪽 마우스 버튼을 처리하지 못했지만 해결책을 찾지 못해도이를 지원하지 못합니다. 또한, 당신의 솔루션으로, Add New Row 레코드에 Enter 나 Escape를 치기 전까지는 다른 셀을 편집 할 수 없었습니다 (어떤 사람들이 원했을 지 모르지만). 다음은 사용자가 클릭 할 때 Add New Record 행의 셀에 대한 변경 사항을 취소하고 모든 마우스 클릭 (왼쪽, 오른쪽, 중간 등)을 처리하는 수정 된 솔루션입니다.

// Used to record when the user is editing a value in the Mass Edit row. 
private DataRecord _addRecordCellBeingEdited = null; 

private void XamDataGrid1_EditModeStarted(object sender, Infragistics.Windows.DataPresenter.Events.EditModeStartedEventArgs e) 
{ 
    if (e.Cell.Record.IsAddRecord) 
     _addRecordCellBeingEdited = e.Cell.Record; 
} 

private void XamDataGrid1_EditModeEnded(object sender, Infragistics.Windows.DataPresenter.Events.EditModeEndedEventArgs e) 
{ 
    _addRecordCellBeingEdited = null; 
} 

private void XamDataGrid1_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    if (_addRecordCellBeingEdited != null) 
    { 
     DataRecordPresenter drp = Infragistics.Windows.Utilities.GetAncestorFromType(e.OriginalSource as DependencyObject, typeof(DataRecordPresenter), true) as DataRecordPresenter; 
     if (!(drp != null && drp.IsAddRecord)) 
     { 
      _addRecordCellBeingEdited.CancelUpdate(); 
     } 
    } 
}