0

I am trying to display data in a datagrid but it is not displaying any data. While going through breakpoints, I have learned the following:

  • The object, receipt has data
  • ocReceiptItem has values
  • After assign ocReceiptItem to grdSalesCart's datacontext, I can see that the values are in the datacontext
  • The binding names and the names in ocReceiptItem match

I am not sure why it isn't populating as it has data in the DataContext

DataGrid:

<DataGrid Name="grdSalesCart" Grid.Column="1" Grid.ColumnSpan="12" Grid.Row="12" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
                  AutoGenerateColumns="False" CanUserSortColumns="false" ScrollViewer.VerticalScrollBarVisibility="Auto" CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Remove Item" Width="3*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Name="btnRemoveItem" Content="Remove Item" Click="btnRemoveItem_Click"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Edit Item" Width="2*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Name="btnEditItem" Content="Edit Item" Click="btnEditItem_Click"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="SKU" Width="2*" Binding="{Binding intItemIndicator, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsReadOnly="True"/>
                <DataGridTextColumn x:Name="txtCartQuantity" Header="Quantity" Width="3*" Binding="{Binding intQuantity, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsReadOnly="True"/>
                <DataGridTextColumn Header="Description" Width="9*" Binding="{Binding varItemDescription, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsReadOnly="True"/>
                <DataGridTextColumn Header="Price" Width="3*" Binding="{Binding intItemPrice, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={StaticResource Double}}" IsReadOnly="True"/>
                <DataGridTemplateColumn Header="Discount" Width="3*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <TextBox Name="txtDiscountAmountCart" Text="{Binding intItemDiscount, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsEnabled="False"/>
                                <CheckBox Name="chkDiscountPercent" Content="Percent?" IsChecked="{Binding bitIsPercentageDiscount, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsEnabled="False"/>
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

Code:

private Receipt receipt;
private ObservableCollection<ReceiptItem> ocReceiptItem;

private void UpdateCartAndTotals()
{
    TransactionManager TM = new TransactionManager();
    receipt = TM.ReturnReceiptTotalsAndCart(receipt);
    ocReceiptItem = receipt.lstReceiptItem;
    grdSalesCart.DataContext = ocReceiptItem; 
    //DataContext = ocReceiptItem;
    //grdSalesCart.ItemsSource = DGM.ReturnSelectedDataTable(13, criteria).DefaultView;
}

What I have tried:

  • Instead of DataContext, I tried setting the ItemsSource with no luck
  • Set the DataContext in the DataGrid definition
  • Set the ItemsSource in the DataGrid definition
  • Changing ocReceiptItem to a list of type ReceiptItem
  • Changing receipt and ocReceiptItem to public

Some other stackoverflow questions that I have looked at:

Il Vic
  • 5,576
  • 4
  • 26
  • 37
TGills
  • 126
  • 1
  • 2
  • 14

0 Answers0