SfDataGrid allows GridTextColumns to have individual widths set, some narrow, some wide etc. However, when using ShowPrintPreview on such a customised grid the column widths are all equal resulting in some column data having too much trailing white space, while the data in other columns is cut off and only partially visible.
Is there a way to force the ShowPrintPreview feature to use the current custom set widths of the GridTextColumns?
Thanks,
Adrian
|
datagrid.PrintSettings.PrintManagerBase = new CustomPrintManager(this.datagrid);
public class CustomPrintManager : GridPrintManager
{
public CustomPrintManager(SfDataGrid grid)
: base(grid)
{
}
protected override double GetColumnWidth(string mappingName)
{
//Here you can return the customized width of each column.
return this.dataGrid.Columns[mappingName].Width;
}
} |
|
datagrid.PrintSettings.PrintManagerBase = new CustomPrintManager(this.datagrid);
public class CustomPrintManager : GridPrintManager
{
public CustomPrintManager(SfDataGrid grid)
: base(grid)
{
}
protected override double GetColumnWidth(string mappingName)
{
if (mappingName == "OrderID")
{
//Here you can calculate the Auto Width while printing
GridColumn gridColumn = this.dataGrid.Columns[mappingName];
MethodInfo methodInfo = this.dataGrid.GridColumnSizer.GetType().GetMethod("CalculateAutoFitWidth", BindingFlags.NonPublic | BindingFlags.Instance);
return (double)methodInfo.Invoke(dataGrid.GridColumnSizer, new object[] { gridColumn, true });
}
else if (mappingName == "CustomerID")
{
//Here you can calculate the SizeToCell Width while printing
GridColumn gridColumn = this.dataGrid.Columns[mappingName];
MethodInfo methodInfo = this.dataGrid.GridColumnSizer.GetType().GetMethod("CalculateCellWidth", BindingFlags.NonPublic | BindingFlags.Instance);
return (double)methodInfo.Invoke(dataGrid.GridColumnSizer, new object[] { gridColumn, true });
}
else if (mappingName == "CustomerName")
{
//Here you can calculate the SizetoHeader Width while printing
GridColumn gridColumn = this.dataGrid.Columns[mappingName];
MethodInfo methodInfo = this.dataGrid.GridColumnSizer.GetType().GetMethod("CalculateHeaderWidth", BindingFlags.NonPublic | BindingFlags.Instance);
return (double)methodInfo.Invoke(dataGrid.GridColumnSizer, new object[] { gridColumn, true });
}
else if (mappingName == "Country")
{
//Here you can return the customized width of each column.
return this.dataGrid.Columns[mappingName].Width;
}
else
return base.GetColumnWidth(mappingName);
}
} |