2012-05-07 2 views
0

Поэтому у меня есть простое окно, которое содержит только XamDataGrid, который содержит предварительный просмотр данных динамического запроса генерируется во время выполнения ...XamDataGrid динамический формат поля плохо

public partial class DataPreview : Window 
{ 
    public DataTable Data { get; set; } 
    public DataPreview(string SQL) 
    { 
     InitializeComponent(); 

     this.DataContext = this; 
     Data = DatabaseManager.ExecuteQuery(SQL); 
    } 
} 

Я DataBound к источнику данных из XamDataGrid ...

<igDP:XamDataGrid DataSource="{Binding Data}" ScrollingMode="Immediate"> 
    <igDP:XamDataGrid.FieldSettings> 
      <igDP:FieldSettings 
      AllowEdit="False"/> 
    </igDP:XamDataGrid.FieldSettings> 
</igDP:XamDataGrid> 

Теперь это все работает нормально, проблема с типом данных редактора в XamDataGrid не совпадает с типом данных поля иногда. Например, все цифры показывают знак доллара. Я пытался добавить эту строку ...

EditAsType="{x:Type sys:String}" 

исправляющего все, кроме фактических денежных сумм, которые теперь отображаются в xx.xxxx, без знака доллара. Все решения, которые я нашел в Интернете, похоже, редактируют поле непосредственно в xaml, но поскольку все поля являются динамическими, это не вариант. Есть ли что-то, что я могу сделать, чтобы правильно настроить редакторов в xaml? Или какую-то рутину, которую я могу сделать в коде, чтобы правильно массировать данные, чтобы правильно отображать их из XamDataGrid? Может ли кто-нибудь использовать любой код с помощью XamDataGrid связанным образом со всеми динамическими столбцами, но умеет правильно их форматировать на основе типа данных?

ответ

2

Редактор, который используется для поля определенного типа, может быть установлен с помощью ValueEditor.RegisterDefaultEditorForType. Если редактор правильный, и вы хотите изменить маску для данного типа, вы можете использовать XamMaskedEditor.RegisterDefaultMaskForType.

Если вы хотите установить маску или редактор по-разному для разных полей того же типа, тогда вам нужно будет сделать это в коде после создания FieldLayout. Для этого вы можете использовать FieldLayoutInitialized event.

+0

Как я могу использовать метод ValueEditor.RegisterDefaultEditorForType? У вас есть ссылка на простой пример? –

+0

В этом сообщении есть пример: http://community.infragistics.com/forums/p/33674/183177.aspx#183177 – alhalama

+0

Я немного смущен тем, что класс редактора значений в этом примере, я не могу вызовите этот метод из XamDataGrid, он кажется статическим методом для самого редактора, который не имеет большого смысла, как это может реально решить проблему. –