2014-09-05 4 views
0

내 gridview에서 셀을 두 번 클릭하고 그것을 클릭 할 때마다 값을 편집 할 수있는 새 창이 열립니다. 그러나, 내 코드에서, 그것은 값이있는 경우에도 null로 반환합니다. 내 gridview에 대한 이벤트 처리기가 잘못되었다고 생각합니다. Heres는 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."라는 메시지입니다.OnCelldouble 내 gridview에서 클릭하십시오

여기 내 코드는입니다 ..

생성자 :

grdProducts.AddHandler(GridViewCellBase.CellDoubleClickEvent, 
         new EventHandler<RadRoutedEventArgs>(OnCellDoubleClick), 
         true); 

클릭 이벤트 :

private void OnCellDoubleClick(object sender, RadRoutedEventArgs e) 
{ 
    Product product = (sender as Telerik.Windows.Controls.GridViewColumn).DataContext as Product; 
    ShowProductWindow(product); 

    //MessageBox.Show("test"); 
} 

그것을 알아 내기 위해 도와주세요.

+0

예외가있는 정확한 행을 표시 할 수 있습니까? – JleruOHeP

+0

@JleruOHeP this : 제품 제품 = (보낸 사람 : Telerik.Windows.Controls.GridViewColumn) .DataContext as Product; – iamkcdavid

+0

다음은 RadWindow 호출 내 코드입니다 : 개인 무효의 ShowProductWindow (제품 제품) { 경우 { ProductWindow productWindow = 새로운 ProductWindow (제품, projectDBContext) (제품 = null이!) productWindow.Closed + = ProductWindowClosed; productWindow.ShowDialog(); } } – iamkcdavid

답변

1

발신자가 Telerik.Windows.Controls.GridViewColumn이 아니기 때문에 예외가 있습니다. 아마도 보낸 사람이 GridViewCell이됩니다. 다음과 같이 시도하십시오.

private void OnCellDoubleClick(object sender, RadRoutedEventArgs e) 
{ 
    var cell = e.Source as GridViewCell; 
    if (cell == null) return; 

    var row = cell.ParentRow as GridViewRow; 
    if (row == null) return; 

    Product product = row.DataContext as Product; 
    ShowProductWindow(product); 

    //MessageBox.Show("test"); 
} 
+0

그것은 작동하지 않았다. 셀에 값이 있어도 항상 null로 돌아갑니다. – iamkcdavid

+0

@Kim 다음을 확인할 수 있습니까? 발신자가 무엇입니까? – JleruOHeP

+0

내 보낸 사람이 셀의 RadRoutedEventargs이며 작동하지만 셀이 여전히 null로 반환됩니다. 이 코드를 사용해 보았습니다. 제품 제품 = (보낸 사람 : Telerik.Windows.Controls.GridViewColumn) .DataContext as Product; 여전히 그리드의 셀은 null로 돌아갑니다. 나는 telerik이 다른 접근법을 가지고 있다고 생각한다. 확실하지 않습니다 .. – iamkcdavid