Hi everyone,
My datagrid is not displaying any data in my datagrid
I belief it is a binding issue which I'm overlooking.
Here is my xaml code:
<ContentView>
<ScrollView Orientation="Horizontal">
<dg:DataGrid x:Name="dgvItemDetailsGrid" ItemsSource="{Binding BuildItemDetailsData}"
RowHeight="40"
HeaderHeight="50" HeaderBackground="#E0E6f8"
HeaderFontSize="15" ActiveRowColor="#8899AA">
<!--SelectedItem="{Binding ItemDetailsSelected}"-->
<x:Arguments>
<ListViewCachingStrategy>RetainElement</ListViewCachingStrategy>
</x:Arguments>
<dg:DataGrid.Columns>
<dg:DataGridColumn Title="Doc Entry" PropertyName="DocEntryItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Doc Num" PropertyName="DocNumItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Item Number" PropertyName="ItemCodeItemDetails" Width="150"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Open Quantity" PropertyName="OpenQtyItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Unit of Measurement" PropertyName="UomCodeItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Order Date" PropertyName="DocDateItemDetails" Width="150"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Order Time" PropertyName="U_DRTItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Weight" PropertyName="Weight1ItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Original Order Quantity" PropertyName="QuantityItemDetails"
Width="125" HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Price" PropertyName="PriceItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<dg:DataGridColumn Title="Packing" PropertyName="U_PACItemDetails" Width="125"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
</dg:DataGrid.Columns>
<dg:DataGrid.RowsBackgroundColorPalette>
<dg:PaletteCollection>
<Color>#E0E6f8</Color>
</dg:PaletteCollection>
</dg:DataGrid.RowsBackgroundColorPalette>
</dg:DataGrid>
</ScrollView>
</ContentView>
Here is my Model Code
public class DgvItemDetails
{
public int DocEntryItemDetails { get; set; }
public int DocNumItemDetails { get; set; }
public string ItemCodeItemDetails { get; set; }
public decimal OpenQtyItemDetails { get; set; }
public string UomCodeItemDetails { get; set; }
public DateTime DocDateItemDetails { get; set; }
public string U_DRTItemDetails { get; set; }
public decimal Weight1ItemDetails { get; set; }
public decimal QuantityItemDetails { get; set; }
public decimal PriceItemDetails { get; set; }
public string U_PACItemDetails { get; set; }
}
Here is my ViewModel Code
public ObservableCollection<DgvItemDetails> BuildItemDetailsData { get; set; } = new ObservableCollection<DgvItemDetails>();
private void GetSQLFillOrderDetails()
{
string Customer = string.Empty;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
if (selectedCustomer != "")
{
string[] CustomerName = selectedCustomer.Split(':');
Customer = CustomerName[0];
}
try
{
string[] OrderNr;
OrderNr = selectedSalesOrder.Split(':');
string SQLCommand = @"SELECT rdl.DocEntry AS [Doc Entry], CAST(" + OrderNr[0].Trim() + " AS int) AS [Doc Number]," +
"rdl.ItemCode AS [Item Number], rdl.OpenQty AS [Open Quantity], rdl.UomCode as [Unit of Measurement], " +
"cast(rdl.DocDate AS date) AS [Order Date], ISNULL(U_DRT,'') AS [Order Time], rdl.Weight1 AS [Weight], " +
"rdl.Quantity AS [Original Order Quantity], " +
"rdl.Price AS [Price], " +
"ISNULL(rdl.U_PAC,'') AS [Packing] " +
"FROM RDR1 rdl " +
"INNER JOIN ORDR ord ON(ord.DocEntry = rdl.DocEntry) " +
"WHERE rdl.LineStatus <> 'C' AND ord.CardCode = '" +
Customer + "' AND ord.DocEntry = '" + DocEntrySelected + "'";
using (SqlCommand command = new SqlCommand(SQLCommand, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader != null)
{
while (reader.Read())
{
BuildItemDetailsData.Add(new DgvItemDetails()
{
DocEntryItemDetails = reader.GetInt32(0),
DocNumItemDetails = reader.GetInt32(1),
ItemCodeItemDetails = reader.GetString(2),
OpenQtyItemDetails = reader.GetDecimal(3),
UomCodeItemDetails = reader.GetString(4),
DocDateItemDetails = reader.GetDateTime(5),
U_DRTItemDetails = reader.GetString(6),
Weight1ItemDetails = reader.GetDecimal(7),
QuantityItemDetails = reader.GetDecimal(8),
PriceItemDetails = reader.GetDecimal(9),
U_PACItemDetails = reader.GetString(10)
});
}
Application.Current.MainPage.BindingContext = BuildItemDetailsData;
}
}
}
}
catch (Exception ex)
{
Application.Current.MainPage.DisplayAlert("Alert", "Error Creating order item list table :", ex.Message);
}
connection.Close();
}
}
Any help would be appreciated
I did what you suggested but still doesn't display in the datagrid.
It does add every item to the ObservableCollection
Edit: Never mind the above is populating but it only displays when I click on the titles