如何格式化rad网格字符串列?

问题描述 投票:0回答:3

我有一个rad网格,示例列为:

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

网格中的列显示为简单文本,例如123456789,但是我想像123-45-6789一样显示此列。

我尝试了DataFormatString="{0:###-##-####}",但它不起作用,还尝试了GridMaskedColumn,但不起作用。

c# asp.net telerik telerik-grid radgrid
3个回答
2
投票

您可以使用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,但这应该可以使您到达那里。


1
投票

还有另一种通过使用正则表达式来实现此目的的方法。通过网格ItemDataBound上的方法传递未格式化的SSN。

 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;
            }

0
投票

Dataformat for Radgrid

Radgrid的数据格式字符串

© www.soinside.com 2019 - 2024. All rights reserved.