String

如果它們都是數字,DevExpress 會以不同的方式格式化列

  • October 15, 2017

我有一個帶有“程式碼”列的表,定義為varchar. 但是,如果您在該欄位的某些記錄中只有數字,並且您在我們的應用程序中搜尋這些記錄,則網格 (DevExpress) 中的結果將格式化為數字。

當您在結果中包含包含 的記錄時a-z,就不會發生格式化。所以我想看看我是否可以從數據庫端解決這個問題。我在表格上創建了一個視圖,並將相關列更改為:

:
Code + CHAR(144) AS Code
:

這解決了網格中欄位的格式問題。該欄位現在將始終被視為一個字元串,即使結果僅包含數字。

但是,問題是,如果我現在在應用程序的前端顯式搜尋此值,例如Code = 40E,由於特殊字元(不可見),我沒有得到任何結果。所以我只是部分解決了這個問題。起初我試圖在該欄位中添加一個尾隨空格,但這不起作用。

如果可能的話,有什麼想法可以從數據庫中解決這個問題嗎?

我只能訪問 SQL 對象,因此我試圖通過 SQL 來解決這個問題。有沒有辦法在數據庫視圖中解決這個問題,同時確保沒有附加到影響搜尋的欄位值的有趣字元?

從後面的程式碼中強制使用 GridView 列格式:

using DevExpress.Utils;
// ...
GridColumn myCol = new GridColumn() { Caption = "TheColumn", Visible = true, FieldName = "ColumnName" };
colPayment.DisplayFormat.FormatType = FormatType.String; //Char, Varchar, or whatever option DE gives you to format the display
gridView1.Columns.Add(myCol)

如果您要從後面的程式碼中添加它,如果不訪問列並設置格式。

gridView1.Columns["TheColumn"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.String;

這不是 SQL 問題,數據以應該儲存的格式儲存,在這種情況下,前端是應該處理顯示格式的。如果您創建視圖,則會發生相同的交易,因為網格仍會嘗試猜測列類型。與開發人員交談。

引用自:https://dba.stackexchange.com/questions/173187