Как отформатировать столбец строки сетки рад?

У меня есть рад-сетка с образцом столбца, заданным как:

 <telerik:GridBoundColumn DataField="ApplicantSSN" 
    DataFormatString="{0:###-##-####}" 
    HeaderText="SSN/ID Number" 
    SortExpression="ApplicantSSN"
    UniqueName="ApplicantSSN">
 </telerik:GridBoundColumn>

Столбец в сетке отображается как простой текст, например 123456789, но я хочу, чтобы этот столбец отображался как 123-45-6789.

Я пробовал DataFormatString="{0:###-##-####}", но это не работает, а также пробовал GridMaskedColumn, но не работает.


person Bhupendra Shukla    schedule 19.08.2014    source источник
comment
Какой тип данных ApplicantSSN? Если это строка, DataFormatString не обработает ее правильно.   -  person Andrew Whitaker    schedule 19.08.2014
comment
@AndrewWhitaker Это строка. Что мне теперь делать?   -  person Bhupendra Shukla    schedule 19.08.2014
comment
Вы можете изменить тип данных на int или самостоятельно отформатировать строку внутри получателя для свойства.   -  person Andrew Whitaker    schedule 19.08.2014


Ответы (3)


Вы можете использовать событие ItemDataBound, чтобы справиться с этим:

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem dataItem = (GridDataItem)e.Item;
        string originalText = dataItem["ApplicationSSN"].Text;
        dataItem["ApplicationSSN"].Text = originalText.Substring(0, 3) + "-" + originalText.Substring(3, 2) + "-" + originalText.Substring(5, 4);
    }
}

Конечно, я не написал никакой обработки ошибок, чтобы учесть, что длина SSN меньше 9, но это должно помочь вам.

person kerbasaurus    schedule 19.08.2014

Есть и другой способ добиться этого, используя регулярное выражение. Передайте неформатированный SSN в методе ItemDataBound сетки.

 public static string SsnInjectDashes(string ssn)
            {
                if (ssn == null)
                {
                    return String.Empty;
                }
                string value = ssn;
                Regex re = new Regex(@"(\d\d\d)(\d\d)(\d\d\d\d)");
                if (re.IsMatch(ssn))
                {
                    Match match = re.Match(ssn);
                    value = match.Groups[1] + "-" + match.Groups[2] + "-" + match.Groups[3];
                }
                return value;
            }
person Bhupendra Shukla    schedule 22.08.2014

Формат данных для Radgrid

Строки формата данных для Radgrid

person rajquest    schedule 04.10.2019