Good day,
I am trying to implement grouping on a list of dictionary items following the example: sfdatagrid-dynamically-with-json-data
With the below code is still POC code so it is not 100% , but this code should be working.
tapgroupBy.Tapped += (sender, args) =>
{
if (viewModel != null)
try
{
grid.BatchBegin();
grid.View.LiveDataUpdateMode = LiveDataUpdateMode.AllowDataShaping;
grid.GroupCaptionTextFormat = "{ColumnName} : {Key}";
(viewModel as BaseViewModel).IsBusy = true;
var columnName = !string.IsNullOrEmpty(column.LookupGridDisplayColumnName)
? column.LookupGridDisplayColumnName
: !string.IsNullOrEmpty(column.LookupDisplayColumnName)
? column.LookupDisplayColumnName
: !string.IsNullOrEmpty(column.ColumnNameAlternate)
? column.ColumnNameAlternate
: column.ColumnName;
if (sender is Image imageFilter)
{
if (grid != null)
{
if (grid.GroupColumnDescriptions.Any(a=>a.ColumnName == columnName))
{
// grid.GroupColumnDescriptions.Remove((grid.GroupColumnDescriptions.FirstOrDefault(a => a.ColumnName == columnName)));
} else
{
grid.GroupColumnDescriptions.Add(new GroupColumnDescription
{
//ColumnName = "Values[" + columnName + "]"
ColumnName = columnName,
}
);
}
}
}
}
finally
{
grid.BatchCommit();
if (grid.GroupColumnDescriptions.Any())
grid.CollapseAllGroup();
(viewModel as BaseViewModel).IsBusy = false;
}
};
No Grouping happens on the control, what am I missing or is it not possible to do grouping?
|
private void GroupButton_Clicked(object sender, EventArgs e)
{
//Need to refresh the GroupProperty of DynamicModel in the given collection before applying groupdescription to the grid.
viewModel.RefreshGroup("FirstName");
grid.GroupColumnDescriptions.Add(new GroupColumnDescription() { ColumnName = "GroupProperty" }
);
} |
|
public void RefreshGroup(string key)
{
foreach (var dynamicItem in this.DynamicCollection) { dynamicItem.RefreshGroupProperty(key); }
} |
|
public void RefreshGroupProperty(string key)
{
object value = null;
this.Values.TryGetValue(key, out value);
this.GroupProperty = value;
} |