2014-09-05 60 views
0

我需要雙擊我的GridView中的單元格,每當我點擊它時,它應該打開一個新窗口來編輯值。然而,在我的代碼中,即使我有一個值,它也會返回null。我認爲我的gridview的事件處理程序是不正確的。下面是消息「對象引用未設置爲對象的實例」。OnCelld在我的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 2014-09-05 03:35:03

+0

@JleruOHeP this: Product product =(發件人爲Telerik.Windows.Controls.GridViewColumn).DataContext as Product; – iamkcdavid 2014-09-05 04:35:14

+0

這裏是我的調用RadWindow代碼片段: 私人無效ShowProductWindow(產品產品) { 如果 { ProductWindow productWindow =新ProductWindow(產品,projectDBContext);(產品!= NULL) productWindow.Closed + = ProductWindowClosed; productWindow.ShowDialog(); } } – iamkcdavid 2014-09-05 04:38:00

回答

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 2014-09-05 05:22:10

+0

@Kim你可以檢查 - 你的發件人是什麼? – JleruOHeP 2014-09-05 05:23:15

+0

我的發件人是單元格上的RadRoutedEventargs,它可以工作,但單元格仍然返回null。我確實嘗試了我的代碼。 Product product =(發件人爲Telerik.Windows.Controls.GridViewColumn).DataContext as Product; 仍然,我網格上的單元格返回null。我認爲telerik有不同的方法。我不確定.. – iamkcdavid 2014-09-05 05:31:41