We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

SfDataGrid Databinding Template Columns At Runtime

Thread ID:

Created:

Updated:

Platform:

Replies:

132730 Sep 18,2017 06:14 PM UTC Sep 21,2017 05:49 AM UTC Xamarin.Forms 3
loading
Tags: SfDataGrid
Heath Hdogert
Asked On September 18, 2017 06:14 PM UTC

I have a ViewModel with a collection of Resources which has a collection of JobCodes. The collection of Resources are bound to the SfDataGrid and binds to a few columns. The JobCodes are chosen by the user so I need to add columns to the grid to show the values for the Resource/JobCode in the cell. I added a GridTextColumn at runtime and set the MappingName to "JobCodeCollection[2].Value" and it show the value correctly.
What I want is to use a GridTemplateColumn and use a data bound template. When I set theGridTemplateColumn MappingName to "JobCodeCollection[2]" it doesn't seem like any binding happens. If bind the Text of a label in my template to "{Binding JobCodeCollection[2].Value}" it works but it's no longer a reusable template because the data template has the index hard coded.
I have tried using a DataTemplateSelector but that doesn't help. I tried using aGridVirtualizingCellRenderer but could find any examples and couldn't find a method to draw the template. I have tried to create the binding in code but I don't have a handle on the datatemplate controls and it wouldn't respond to grid source changes. I have included my sample project with my attempts.
I am hoping someone knows of a way to add GridTemplateColumns bound to an index collection.

Attachment: DataGridExample_6ffcdd65.zip

Ashok N [Syncfusion]
Replied On September 19, 2017 11:22 AM UTC

Hi William, 

Thanks for contacting Syncfusion support. 

We have checked your sample and you used CellTemplateSelector wrongly in you sample, also you didn’t create the DataTemplate for Special and Normal property. We have modified the sample based on your requirement and attached the sample in the below location, please refer it. 


Please refer the below UG link to get more details about CellTemplateSelector


Regards, 
Ashok 


Heath Hdogert
Replied On September 19, 2017 04:42 PM UTC

Thank you for fixing the template selector but that was not my problem.

The problem is adding columns and setting their binding to an indexed value. I want to be able add rows through the AddDynamicRows method in the MainView.xaml.cs but I can not get it to data bind to the column.


Ashok N [Syncfusion]
Replied On September 21, 2017 05:49 AM UTC

Hi William, 

Thanks for your update . 

We have checked your code for adding GridTemplateColumn in AddDynamicRows method. For GridTemplateColumn we must to set the CellTemplate but you missed to setting the CellTemplate. You can achieve your requirement by setting CellTemplate to  GridTemplateColumn. Please refer the below code example 

------------------------ 
------------------------ 
var col = new GridTemplateColumn(); 
col.HeaderText = code; 
col.MappingName = mappingName; 
col.Width = 100; 
 
var cellTemplate = new DataTemplate(() => 
{ 
    var label = new Label(); 
    label.HorizontalOptions = LayoutOptions.Center; 
    label.VerticalOptions = LayoutOptions.Center; 
    label.SetBinding(Label.TextProperty, new Binding(mappingName, converter: new ValueConverter(),converterParameter: null)); 
    return label; 
}); 
col.CellTemplate = cellTemplate; 
                
MyDataGrid.Columns.Add(col); 


Regards, 
Ashok 


CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

;