Привет! Такая проблема: я хочу, чтобы в sourcegrid числа отображались с разделителем разрядов.
Я привожу число к нужному формату так:
NumberInfoFormat nfi = new CultureInfo("ru-RU",false).NumberFormat;
nfi.GroupSeparator = " "// пробел
myNumber.ToString("N",nfi);
потом число запихиваю в sourcegrid.Но в нем это уже строка, и когда пытаюсь воспользоваться кнопками сортировки в шапке таблицы, сортировка происходит как для строки.
Как мне обойти это?Но так, чтобы числа корректно сортировались и было нужное мне форматирование?
Пытался применять editors, не получилось
Заранее благодарен!
Здравствуйте, AntiInt!
Нужно создать свой класс от базового FormatViewCell и назначить объект его типа свойству View конкретной ячейки:
/// <summary>
/// Форматирования отображения ячейки (типа Int32) грида
/// </summary>
internal class IntFormatViewCell : FormatViewCell
{
/// <summary>
/// Конструктор
/// </summary>
/// <param name="format">Формат содержимого ячейки</param>
public IntFormatViewCell(string format)
: base(format)
{
}
/// <summary>
/// Форматирование содержимого ячейки в соответствии с форматом
/// </summary>
/// <param name="context"></param>
protected override void PrepareVisualElementText(SourceGrid.CellContext context)
{
base.PrepareVisualElementText(context);
if (context.Value != null)
{
int res;
if (Int32.TryParse(context.Value.ToString(), out res))
{
this.ElementText.Value = res.ToString(format);
}
}
}
}
//...
private readonly FormatViewCell viewCountRegularCenter = new IntFormatViewCell("#,##0");
//...
viewCountRegularCenter.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleCenter;
//...
this[row, 4].View = viewCountRegularCenter;