I have a sdFataGrid and the first time when I set a itemsource the grid shows fine, but when I get the source list from the grid and update or add an object to the list and set the list again to the grid the app throws "An unhandled exception occured"
The data is update or adding by a method executed by a clic event
XAML CODE:
<RelativeLayout>
<ScrollView x:Name="scroll" Orientation="Vertical"
HorizontalOptions="Fill"
VerticalOptions="Fill"
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=1, Constant=0}"
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1, Constant=0}">
<StackLayout x:Name="stackLayout" Orientation="Vertical" Spacing="15" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=1, Constant=0}"
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width, Factor=1, Constant=0}">
<syncfusion:SfDataGrid x:Name="DataGrid" ColumnSizer="Star" AutoGenerateColumns="False"
VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<syncfusion:SfDataGrid.Columns x:TypeArguments="syncfusion:Columns">
<syncfusion:GridTextColumn HeaderText="ActivoId" MappingName="ActivoId" IsHidden="True" />
<syncfusion:GridTextColumn HeaderText="Co. barras" MappingName="CodigoBarrasParticular" />
<syncfusion:GridTextColumn HeaderText="Estatus" MappingName="NombreEstatus" />
<syncfusion:GridImageColumn HeaderText="Validacion" MappingName="EstatusIdSource" />
<syncfusion:GridTextColumn HeaderText="Estatus Id" MappingName="EstatusId" IsHidden="True" />
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
</StackLayout>
</ScrollView>
</RelativeLayout>
C# CODE:
public async void VerificarActivo(string scannCodigoBarras)
{
MostrarLoad();
//Se obtienen las entidades del DataGrid
var Repositorio = new ActivosAsignadosEntidadRepositorio
{
ColeccionActivosAsignados = (DataGrid.ItemsSource as List<ActivosAsignadosEntidad>).ToList()
};
//Se busca el codigo de barras en el grid
foreach (var item in Repositorio.ColeccionActivosAsignados)
{
if (item.CodigoBarrasParticular.Equals(scannCodigoBarras))
{
string mensajePopUp;
if (item.EstatusId == 25)
{
item.EstatusId = 24;
item.NombreEstatus = "Localizado";
item.EstatusIdSource = ImageSource.FromFile("s24.png");
//Here the app throws an error
DataGrid.ItemsSource = Repositorio.ColeccionActivosAsignados;
EntryCodigoBarras.Text = string.Empty;
CodigoBarras = string.Empty;
mensajePopUp = Constantes.ActivoMensaePopUpCorrecto;
}
else
mensajePopUp = Constantes.ActivoMensaePopUpYaEscaneado;
OcultarLoad();
ShowPopUp(mensajePopUp);
return;
}
}
}
ENTITY CODE:
public class ActivosAsignadosEntidad
{
private int activoId;
private string codigoBarrasParticular;
private string nombreEstatus;
private ImageSource estatusIdSource;
private int estatusId;
public int ActivoId { get => activoId; set => activoId = value; }
public string CodigoBarrasParticular { get => codigoBarrasParticular; set => codigoBarrasParticular = value; }
public string NombreEstatus { get => nombreEstatus; set => nombreEstatus = value; }
public ImageSource EstatusIdSource { get => estatusIdSource; set => estatusIdSource = value; }
public int EstatusId { get => estatusId; set => estatusId = value; }
public ActivosAsignadosEntidad(int activoId, string codigoBarrasParticular, string nombreEstatus, int estatusId)
{
this.activoId = activoId;
this.codigoBarrasParticular = codigoBarrasParticular;
this.nombreEstatus = nombreEstatus;
this.estatusIdSource = ImageSource.FromFile("s" + estatusId + ".png");
this.estatusId = estatusId;
}
}
VIEWMODEL CODE:
public class ActivosAsignadosEntidadRepositorio
{
private List<ActivosAsignadosEntidad> coleccionActivosAsignados;
public List<ActivosAsignadosEntidad> ColeccionActivosAsignados { get => coleccionActivosAsignados; set => coleccionActivosAsignados = value; }
}