2016-04-01 11 views
0

Ich habe ein DevExpress XtraGrid-Steuerelement, in dem ich eine Dezimalzahl in eine der Zellen setzen möchte, aber wenn ich versuche, von einer Zelle zu einer anderen zu springen, lass es mich einfach nicht, es sei denn, ich ändere es erneut der Wert der Zahl zu einer Ganzzahl. Ich habe die Eigenschaften von Design wie folgt geändert:Dezimalzahlen auf DevExpress XtraGrid-Zellen

[Image of designer]

und es ist nichts passiert, auch im Form.Load Ereignis, das ich diese Eigenschaft programmatisch festgelegt, aber es scheint, dass einfach nicht funktionieren.

colnBase.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric 
colnBase.DisplayFormat.FormatString = "{0:N4}" 

ich die DevExpress Foren überprüft haben, aber ich kann keine Antwort finden, es ist meine erste Frage hier, also wenn jemand von euch kann mir helfen, ich würde wirklich zu schätzen.

+0

Also funktioniert das Format es nur möchte Sie eine Ganzzahl ohne Dezimalstellen eingeben, wenn Sie versuchen, die Zelle zu verlassen, in der diese Nummer ist? Verwenden Sie irgendeine Art von Maske für die Eingabe? – dcreight

+0

Nein, alles, was ich konfiguriert habe, ist nur das DisplayFormat, aber wenn ich versuche, die Zelle mit einer Dezimalzahl darauf zu verlassen, lass es mich einfach nicht. Meine Datentabelle hat den gleichen Datentyp wie der Designer, also ist das nicht das Problem. –

+0

Tut: 'colnBase.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom colnBase.DisplayFormat.FormatString =" n4 "' Arbeit? Ich benutze dies in einer viel älteren Version von DevExpress und scheint gut zu funktionieren. – dcreight

Antwort

0

ich das „Problem“ festgelegt, war der Fehler, dass ich Daten aus einer Ansicht Lade und alle Produkte zurückgegebenen Datensätze als 0

select 0 as data1, 0 as data2 from Table 

Aber es scheint, dass SQL die Zahl als Integer zurück, und ich konnte den Wert modificate im XtraGrid auch nicht in der Lage sein, wenn es als Dezimal erklärt wurde oder Numerisch in der DataTable und der XtraGrid.

ich es wie folgt festgelegt:

select convert(decimal(18,4),0) as data1, convert(decimal(18,4),0) as Data2 from Table 

Danke Jungs für die Beantwortung und ich hoffe, jemand andere Vorteile aus meinen Fehlern.

0

Sie verwenden in Ihrer zugrunde liegenden Datenquelle den falschen Werttyp. Die Werte in Ihrem nBase Feld muss eine der Gleitkommazahl Typ wie Single, Double, Decimal usw.
Hier ist Beispiel:

Dim table = New DataTable() 

table.Columns.Add("ID", GetType(Int32)) 
table.Columns.Add("Value", GetType(Single)) '<= If you change the type to Int32 
' then you will not be able to write floating-point number into your cell 

table.Rows.Add(0, 0) 
table.Rows.Add(1, 1.1) 

gridControl.DataSource = table 

gridView1.PopulateColumns() 

Dim displayFormat = gridView1.Columns("Value").DisplayFormat 
displayFormat.FormatType = FormatType.Numeric 
displayFormat.FormatString = "{0:N4}" 
+0

Der Systemdatentyp im Dataset ist Dezimal als Gitter. –

+0

@ MartinOmarUriasLópez Also, nach Ihrer [Antwort] (http://stackoverflow.com/a/36414783/1805640), gab es 'Int32' Werte in Ihrer zugrunde liegenden Datenquelle (' DataTable' in Ihrem Fall). – nempoBu4

+0

Ja, aber ich konnte es zu der Zeit nicht herausfinden, weil ich in meinem Design-Dataset den Wert als Dezimal festgelegt hatte, und meine primitiven Gedanken waren, dass der DS den Wert als Dezimalwert ausgibt, weil er bereits im DS deklariert wurde . –