2016-02-02 2 views
2

У меня есть RadGridView и кнопка HyperLink, прикрепленная к каждой строке. Я хочу получить значение столбца ID в событии Click Hyperlink. Я пробовал это, но получил NullReferenceException, потому что SelectedItem содержит null.Щелкните правой кнопкой мыши по строке GridView

private void OnGetDetailsClick(object sender, RoutedEventArgs e) 
{ 
    ProductDetail productDetail = new ProductDetail(); 
    Product product = this.grdProductGrid.SelectedItem as Product; 
    productDetail.ProductId = product.ProductID 
} 

Xaml для RadGridView

<telerik:RadGridView HorizontalAlignment="Left" 
          Height="278" 
          VerticalAlignment="Top" 
          Width="1220" 
          Margin="20,0,0,0" 
          Name="grdProductGrid" 
          ColumnWidth="*" 
          AutoGenerateColumns="False" > 

       <telerik:RadGridView.Columns> 
        <telerik:GridViewDataColumn x:Name="ID" 
               DataMemberBinding="{Binding Path=ProductID}" 
               Header="ID" 
               IsReadOnly="True" 
               IsVisible="False"/> 


        <telerik:GridViewDataColumn x:Name="Name" 
               DataMemberBinding="{Binding Path=Name}" 
               Header="Name" 
               IsReadOnly="True" /> 

        <telerik:GridViewDataColumn x:Name="Description" 
               DataMemberBinding="{Binding Path=Description}" 
               Header="Description" 
               IsReadOnly="True" /> 


        <telerik:GridViewColumn Header="Details" Width="*"> 
         <telerik:GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal"> 
            <HyperlinkButton Content="Details" 
                Tag="Hyperlinkbutton" 
                HorizontalAlignment="Center" 
                Click="OnGetDetailsClick"/> 
           </StackPanel> 
          </DataTemplate> 
         </telerik:GridViewColumn.CellTemplate> 
        </telerik:GridViewColumn> 
        </telerik:RadGridView.Columns> 
</telerik:RadGridView> 

Что случилось с моим кодом? Как я могу получить доступ к строке на событии Click?

ответ

2

Вы можете использовать CommandParameter передать Product на событие щелчка

<HyperlinkButton Content="Details" 
    Tag="Hyperlinkbutton" 
    HorizontalAlignment="Center" 
    Click="OnGetDetailsClick" CommandParameter={Binding .}/> 

и в вашем коде позади вас есть

Product product=((Product)((HyperlinkButton)sender).CommandParameter) 
+0

Что вы свяжете на? Здесь 'CommandParameter = {Binding.}'? –

+1

{Binding.} Означает привязку к текущему объекту. Если ваш текущий объект является экземпляром продукта, вы можете привязываться к нему. однако вы также можете привязать свойство своего экземпляра. например {Binding ProductID}, в этом случае параметр, переданный клику, является ProductID, а не самим экземпляром продукта –

+0

«CommandParameter» упрощает доступ к материалам. Спасибо чувак! –

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