Problem with Silverlight Datagrid

Posted on 2008-11-04
Last Modified: 2013-11-12
I have a nested datagrid in a xaml file, the parent datagrid loads the vendor information and the details loads the documents for that vendor in a datagrid. Everything is working fine until I click in the child datagrid and then go to the combobox and choose another vendor. When the new vendor is loaded nothing shows in the datagrid but the itemsource shows the info is there. Know if I click on the child cell and then click back on the parent cell everything works fine.

I need to either select a cell programmatically from the parent datagrid to change the focus back on that, or fix the problem with the datagrid not showing up
Question by:wreaves

    Author Comment


    <UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"  x:Class="ITAccountReport.Page"
        xmlns:d="" xmlns:mc="" mc:Ignorable="d">
                <RowDefinition Height="25"/>
                <RowDefinition Height="*"/>
                <ColumnDefinition Width="25"/>
                <ColumnDefinition Width="380"/>
                <ColumnDefinition Width="260"/>
                <ColumnDefinition Width="260"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="25"/>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#3E5f8a" Offset="0.259"/>
                    <GradientStop Color="#FFFFFFFF" Offset="1"/>
            <TextBlock x:Name="txtVendorName" HorizontalAlignment="Left"  Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Text="Vendor Name" Width="Auto" Foreground="White" Margin="0,0,0,0"/>
            <ComboBox  x:Name="cbVendorName"  HorizontalAlignment="Left" Margin="80,0,0,0" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Width="300" />
            <TextBlock Grid.Row="0" Grid.Column="2" HorizontalAlignment="left" x:Name="txtSelectStartDate" Foreground="White"  Text="Select Start Date"/>
            <basics:DatePicker Grid.Row="0" HorizontalAlignment="Left" Margin="100,0,0,0" Grid.Column="2" x:Name="dtStartDate" Width="150" />
            <TextBlock Grid.Row="0" Grid.Column="3" HorizontalAlignment="Left"  x:Name="txtSelectEndDate" Text="Select End Date" Foreground="White" />
            <basics:DatePicker Grid.Row="0" HorizontalAlignment="Left" Margin="100,0,0,0"  Grid.Column="3" x:Name="dtEndDate" Width="150"  />
            <Button x:Name="Search" Content="Search" HorizontalAlignment="Left"  Grid.Column="4" Grid.ColumnSpan="2"/>
            <data:DataGrid x:Name="FolderDatagrid"      AutoGenerateColumns="False" IsReadOnly="True" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="4">
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="white" Offset="0.259"/>
                        <GradientStop Color="#C1C1C1" Offset="1"/>
                    <data:DataGridTextColumn Header="Folder Number" Binding="{Binding FLD_RSN}" Visibility="Collapsed" />
                    <data:DataGridTextColumn Header="Vendor ID" Width="100" Binding="{Binding A_VENDOR_ID}" />
                    <data:DataGridTextColumn Header="Vendor Name" Width="200" Binding="{Binding A_VENDOR_NAME}" />
                    <data:DataGridTextColumn Header="Vendor Desc" Width="500" Binding="{Binding A_VDR_DESC}" />
                        <data:DataGrid x:Name="DocumentDataGrid" AreRowDetailsFrozen="True"  RowDetailsVisibilityMode="Collapsed"  HorizontalGridLinesBrush="Black" GridLinesVisibility="All"  BorderBrush="Black" BorderThickness="2"  AutoGenerateColumns="FALSE" ItemsSource="{Binding CAWDOCUMENT}"   Height="419" Margin="0,-5,0,0" IsReadOnly="True"  VerticalAlignment="Bottom" >
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#C1C1C1" Offset="0.259"/>
                                    <GradientStop Color="#FFFFFFFF" Offset="1"/>
                                <data:DataGridTextColumn Header="DOC_RSN" Binding="{Binding DOC_RSN}" Visibility="Collapsed" />
                                <data:DataGridTextColumn Header="DOC TYPE" Width="100" Binding="{Binding DOC_TYPE}" />
                                <data:DataGridTextColumn Header="DOC Description" Width="200" Binding="{Binding DOC_DESC}" />
                                <data:DataGridTextColumn Header="Check Number" Width="100" Binding="{Binding A_CHECK_NO}" />
                                <data:DataGridTextColumn Header="Amount" Width="100" Binding="{Binding A_AMOUNT}"/>
                                <data:DataGridTextColumn Header="Check Date" Width="600" Binding="{Binding A_CHECK_DATE}"/>
                                <data:DataGridTemplateColumn Header="Image" Width="100">
                                            <HyperlinkButton  Content="Image" TargetName="Image" Foreground="White"  NavigateUri="{Binding IMAGE_FILE}">
                                                <HyperlinkButton.Background >
                                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                                        <GradientStop Color="#3E5f8a" Offset="0.259"/>
                                                        <GradientStop Color="#FFFFFFFF" Offset="1"/>
    Code Behind
    Imports System.Windows.Data
    Partial Public Class Page
        Inherits UserControl
        Dim ClientHost As ServiceReference1.Service1Client = New ServiceReference1.Service1Client
        Dim dg As New DataGrid
        Dim folderrow As ServiceReference1.CAWFOLDER
        Public Sub New()
            AddHandler ClientHost.GetVendorCompleted, AddressOf ClientHost_GetVendorCompleted
        End Sub
        Private Sub ClientHost_GetVendorCompleted(ByVal sender As Object, ByVal e As ServiceReference1.GetVendorCompletedEventArgs)
            If Not e.Result Is Nothing Then
                For Each item In e.Result
            End If
        End Sub
        Private Sub cbVendorName_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles cbVendorName.SelectionChanged
            AddHandler ClientHost.GetVendorInfoCompleted, AddressOf ClientHost_GetVendorInfoCompleted
        End Sub
        Private Sub ClientHost_GetVendorInfoCompleted(ByVal sender As Object, ByVal e As ServiceReference1.GetVendorInfoCompletedEventArgs)
            If Not e.Result Is Nothing Then
                FolderDatagrid.ItemsSource = e.Result
            End If
        End Sub
        Private Sub FolderDatagrid_LoadingRowDetails(ByVal sender As Object, ByVal e As System.Windows.Controls.DataGridRowDetailsEventArgs) Handles FolderDatagrid.LoadingRowDetails
            FolderDatagrid.SelectedIndex = e.Row.GetIndex
            AddHandler ClientHost.GetVendorDocsCompleted, AddressOf clientHost_GetVendorDocCompleted
            Dim row As ServiceReference1.CAWFOLDER = FolderDatagrid.SelectedItem()
            folderrow = row
            If Not row Is Nothing Then
                dg = e.DetailsElement.FindName("DocumentDataGrid")
            End If
        End Sub
        Private Sub clientHost_GetVendorDocCompleted(ByVal sender As Object, ByVal e As ServiceReference1.GetVendorDocsCompletedEventArgs)
            If Not e.Result Is Nothing Then
                dg.ItemsSource = e.Result
            End If
        End Sub
    End Class

    Open in new window


    Accepted Solution

    I placed the focus() at the first of  combobox selecteditem event and it worked fine.

    Featured Post

    Do You Know the 4 Main Threat Actor Types?

    Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

    Join & Write a Comment

    After several hours of googling I could not gather any information on this topic. There are several ways of controlling the USB port connected to any storage device. The best example of that is by changing the registry value of "HKEY_LOCAL_MACHINE\S…
    User Beware!  This is a rather permanent solution to removing your email from an exchange server.  The only way to truly go back is to have your exchange administrator restore your mailbox from backups.  This is usually the option of last resort.  A…
    Viewers will learn the different options available in the Backstage view in Excel 2013.
    The viewer will learn how to create two correlated normally distributed random variables in Excel, use a normal distribution to simulate the return on different levels of investment in each of the two funds over a period of ten years, and, create a …

    728 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    19 Experts available now in Live!

    Get 1:1 Help Now