聽起來很簡單,對嗎?我需要格式化一個字符串作爲radgrid winform單元格中的電話號碼
我可以格式化輸入,但我有一個數據庫,作爲字符串返回值。無論我做什麼,如果它以1234567890的形式存儲在數據庫中,我都會返回1234567890。數據庫中的所有內容都存儲爲嚴格字符串數字數據,這意味着沒有字母或特殊字符,但它是一個varchar(10)字段。
我創建了一個GridViewMaskBox列,並將其設置爲數字,然後在格式化事件改變了數據的數字是這樣的:
GridViewMaskBoxColumn maskBoxColumn = new GridViewMaskBoxColumn();
maskBoxColumn.Name = "Phone";
maskBoxColumn.FieldName = "cellphone_number";
maskBoxColumn.HeaderText = "Phone";
maskBoxColumn.MaskType = MaskType.Numeric;
maskBoxColumn.Mask = "(000) 000-0000";
maskBoxColumn.TextAlignment = ContentAlignment.MiddleCenter;
maskBoxColumn.ReadOnly = false;
radGridView1.MasterTemplate.Columns.Add(maskBoxColumn);
在CellFormatting事件
然後:
if (e.Column.Name=="cellPhone")
{
long cellInfo =Convert.ToInt64(e.CellElement.Value);
e.CellElement.Value = cellInfo;
}
我甚至試圖只是用於測試目的:
if (e.Column.Name=="cellPhone")
{
long cellInfo =Convert.ToInt64(e.CellElement.Value);
long number = 1234567890;
e.CellElement.Value = number;
}
,細胞仍然顯示1234567 89代替(123)456-7890
我試圖創建一個標準文本列,並使用每一個變化: radGridView1.Columns [ 「手機」] formatString的=「{0:(###)## # - ####}「; 然後在格式事件中再次從字符串更改爲int64。 我已經在調試器中驗證它確實正在觸發事件並正確更改數據類型。
我準備好做出小動物的犧牲,但是恐懼實際上並沒有幫助,並可能阻礙我建立的任何良好的業力。 請幫忙。我已經花了幾個小時應該是孩子們玩的。
喬
更新:我可以做下面這似乎工作,但實際上取代了在網格中的文本「()」中的數字,其螺絲上編輯數據庫更新:
if (e.CellElement.Value.ToString().Length==10)
{
BigInteger bi = new BigInteger();
bool worked = BigInteger.TryParse(e.CellElement.Value.ToString(),out bi);
string numberAsText = bi.ToString("###-###-####");
e.CellElement.Value = numberAsText.ToString();}
我想我追我的尾巴......
更新: 我現在已經添加了一個新的(非數據綁定)列稱爲cellMasked,我必須在數據綁定手機列CellFormating事件以下單代碼行:
e.Row.Cells["cellMasked"].Value = Convert.ToUInt64(e.CellElement.Value).ToString("###-###-####");
仍在工作,但它感覺像是在正確的方向邁出的一步。
我們DisplaText財產不能確定radgrid控件 –