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. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to show multi-line header text in a SfDataGrid?

Platform: Xamarin.iOS |
Control: SfDataGrid
Tags: formatting

SfDataGrid allows you to customize the header text for a GridColumn by using the HeaderText property. However by default the grid displays only single line of text in the header and hence when you load a longer header text, the SfDataGrid clips them and displays an ellipsoid at the end.


In case, if longer text need to be displayed in the header, then SfDataGrid allows you to achieve it by creating a custom HeaderCellRenderer derived from HeaderCellRenderer. The custom HeaderCellRenderer replaces the default header view. Hence you can use it to load a label with LineBreakMode property being set to WordWrap. You can also decide the number of lines the text should display by setting the Lines property of the UILabel. You can use the HeaderRowHeight property to customize the header row height as required based on your header text.


Refer the following code example which illustrates how to show multiline header in SfDataGrid.



Public class CustomHeaderCellRenderer: GridHeaderCellRenderer
   public CustomHeaderCellRenderer ()
   public override void OnInitializeDisplayView (DataColumnBase dataColumn, UILabel view)
      if (view != null) 
         view.Text = dataColumn.CellValue.ToString ();
         view.Lines = 5;
         view.LineBreakMode = UILineBreakMode.WordWrap;
         view.TextAlignment = UITextAlignment.Center;


Make sure you add the Custom Renderer to the SfDataGrid’s CellRenderers collection in your ViewController. Refer the following code example.


public partial class ViewController : UIViewController
   SfDataGrid grid= new SfDataGrid();
   ViewModel viewmodel=new ViewModel();
   public ViewController()
   public override void ViewDidLoad ()
      base.ViewDidLoad ();
      this.View.BackgroundColor = UIColor.White;
      grid.ItemsSource = viewmodel.Info;
      grid.BackgroundColor = UIColor.White;
      grid.HeaderRowHeight = 150;
       //Removing default HeaderCellRenderer and adding custom renderer
      grid.CellRenderers.Remove ("HeaderView");
      grid.CellRenderers.Add ("HeaderView",new CustomHeaderCellRenderer());
      grid.ColumnSizer = ColumnSizer.Star;
      GridTextColumn test = new GridTextColumn ();
      test.MappingName = "ID";
      test.HeaderText = "This is a demo to set multi line text as a column header";
      grid.Columns.Add (test);
      View.AddSubview (grid);
   public override void ViewDidLayoutSubviews ()
      this.grid.Frame = new CGRect (0, 20, View.Frame.Width, View.Frame.Height-20);
      base.ViewDidLayoutSubviews ();


The following screenshot shows the final outcome on executing the above code.

Sample image KB


You can download the working sample for this KB from the below link.



2X faster development

The ultimate Xamarin UI toolkit to boost your development speed.
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

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

Live Chat Icon For mobile