text ellipsis on DataGrid cells ?
Hi,
it there a way or a style to show a text ellipsis on an SfDatagrid cell ("..." after the cell text if it is not fully displayed) ?
I'd like to have such a functionality: when the cell size is not sufficient to display all the text content, the ellipsis is shown near the visible text and a tooltip is automatically available on the cell, containing all the complete cell value.
Otherwise, if the text is completly visibile on the cell, no ellipsis and no tooltip is generated.
Is it possible to obtain this functionality ?
Silvio
SIGN IN To post a reply.
7 Replies
SV
Srinivasan Vasu
Syncfusion Team
May 2, 2016 12:51 PM UTC
Hi Silvio,
Thanks for contacting Syncfusion support.
We have analyzed your query and we have prepared a sample as per your scenarios. In attached sample, we have used Converter for ToolTip.Visiblity property to show ToolTip when the text has been trimmed in SfDataGrid. Please refer the below code example and you can download sample from the below location.
C#
|
public class FormatConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return Visibility.Collapsed;
FrameworkElement textBlock = (FrameworkElement)value;
textBlock.Measure(new System.Windows.Size(Double.PositiveInfinity, Double.PositiveInfinity));
// Based on Width – Show Tooltip
if (((FrameworkElement)value).ActualWidth < ((FrameworkElement)value).DesiredSize.Width)
return Visibility.Visible;
else
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
} |
XAML
|
<Window.Resources>
<local:FormatConverter x:Key="formatConverter" />
<Style TargetType="{x:Type ToolTip}">
<Setter Property="Visibility" Value="{Binding RelativeSource={RelativeSource Self},
Path=PlacementTarget, Converter={StaticResource formatConverter}}"/>
</Style>
</Window.Resources> |
Regards,
Srinivasan
SI
Silvio
May 19, 2016 04:59 PM UTC
Thank you for your answer.
It seemed that always was good in your idea but today I've realized that there are some big side effects in your solution.
In fact, adding these rows in my XAML:
<Window.Resources>
<local:FormatConverter x:Key="formatConverter" />
<Style TargetType="{x:Type ToolTip}">
<Setter Property="Visibility" Value="{Binding RelativeSource={RelativeSource Self},
Path=PlacementTarget, Converter={StaticResource formatConverter}}"/>
</Style>
</Window.Resources>
I exactly have tooltips only on cells that are smaller than their content, but, on the other side, now ALL the tooltips on SfDataGrid columns are never displayed yet except when the column title content is smaller then the header cell size.
But, as you can image, I'd like my toolpis on column headers are always displayed in all situations.
So, have you any idea to solve the problem ... i.e. to have tooltips not shown if the cells are too small only for cells but NOT for headers.
Let me know .....
SI
Silvio
May 19, 2016 05:11 PM UTC
Probably I've resolved by myself.
I've changed your converter method with the bold inserted new lines:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return Visibility.Collapsed;
if (!(value is GridCell))
return Visibility.Visible;
FrameworkElement textBlock = (FrameworkElement)value;
textBlock.Measure(new System.Windows.Size(Double.PositiveInfinity, Double.PositiveInfinity));
if (((FrameworkElement)value).ActualWidth < ((FrameworkElement)value).DesiredSize.Width)
return Visibility.Visible;
else
return Visibility.Hidden;
}
Not it seems to work as I like!
SV
Srinivasan Vasu
Syncfusion Team
May 20, 2016 07:26 AM UTC
Hi Silvio,
We have analyzed your query and you can enable the ToolTip for header cell by setting GridColumn.ShowHeaderToolTip as true. And you can skip the converter for header cell as per your code snippet.
Please refer the code example.
XAML
|
<Syncfusion:SfDataGrid.Columns>
<Syncfusion:GridTextColumn MappingName="EmployeeName" ShowHeaderToolTip="True"/>
<Syncfusion:GridTextColumn MappingName="EmployeeDesignation" />
<Syncfusion:GridTextColumn MappingName="EmployeeSalary" />
<Syncfusion:GridTextColumn MappingName="EmployeeArea" />
<Syncfusion:GridTextColumn MappingName="EmployeeGender" />
</Syncfusion:SfDataGrid.Columns> |
C#
|
public class FormatConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return Visibility.Collapsed;
if (!(value is GridCell))
return Visibility.Visible;
FrameworkElement textBlock = (FrameworkElement)value;
textBlock.Measure(new System.Windows.Size(Double.PositiveInfinity, Double.PositiveInfinity));
if (((FrameworkElement)value).ActualWidth < ((FrameworkElement)value).DesiredSize.Width)
return Visibility.Visible;
else
return Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
} |
Please refer the below UG Link to know more about ToolTip.
Sample Location: ToolTip
Regards,
Srinivasan
Srinivasan
SI
Silvio
December 5, 2016 10:28 AM UTC
Dear all,
I have added to my old form a call to
SfSkinManager.SetVisualStyle( ....)
in order to manage skin styles in my form and also to my Datagrid object.
But making this change, all the changes made to manage tooltip visibility with that converter don't work yet.
The conveter is no longer called, in fact.
What can I do to be able to continue to use my tooltip visibility converter but also have skin style management ?
Thank you very much.
Silvio
FP
Farjana Parveen Ayubb
Syncfusion Team
December 6, 2016 08:31 AM UTC
Hi Silvio,
Thank you for your response.
We have analyzed your query, you can achieve your requirement by setting the Style for a ToolTip inside the SfDataGrid.Resources while applying the VisualStyles.
Please find the below code example and sample in the following location:
Code Example:
|
<Syncfusion:SfDataGrid.Resources>
<Style TargetType="{x:Type ToolTip}">
<Setter Property="Visibility" Value="{Binding RelativeSource={RelativeSource Self},
Path=PlacementTarget, Converter={StaticResource formatConverter}}"/>
</Style>
</Syncfusion:SfDataGrid.Resources> |
Sample Location :
Regards,
Farjana Parveen A
FP
Farjana Parveen Ayubb
Syncfusion Team
December 6, 2016 08:42 AM UTC
SIGN IN To post a reply.
- 7 Replies
- 3 Participants
-
SI Silvio
- Apr 29, 2016 08:58 PM UTC
- Dec 6, 2016 08:42 AM UTC