Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何格式化rad栅格字符串列?_C#_Asp.net_Telerik_Telerik Grid_Radgrid - Fatal编程技术网

C# 如何格式化rad栅格字符串列?

C# 如何格式化rad栅格字符串列?,c#,asp.net,telerik,telerik-grid,radgrid,C#,Asp.net,Telerik,Telerik Grid,Radgrid,我有一个rad网格,其示例列如下所示: <telerik:GridBoundColumn DataField="ApplicantSSN" DataFormatString="{0:###-##-####}" HeaderText="SSN/ID Number" SortExpression="ApplicantSSN" UniqueName="ApplicantSSN"> </telerik:GridBoundColumn>

我有一个rad网格,其示例列如下所示:

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

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


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

您可以使用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的原因,但这应该可以让您达到目的。

您可以使用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的原因,但这应该可以帮助您实现这一点。

还有另一种方法可以通过使用正则表达式来实现这一点。在grid 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;
            }

还有另一种方法可以通过使用正则表达式来实现这一点。在grid 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;
            }

Radgrid的数据格式字符串


Radgrid的数据格式字符串

什么数据类型是应用程序SN?如果它是一个字符串,
DataFormatString
将无法正确处理它。@AndrewWhitaker它在字符串中。现在我该怎么办呢?您可以将数据类型更改为
int
,或者自己在属性的“getter”中格式化字符串,该属性的数据类型是
applicationssn
?如果它是一个字符串,
DataFormatString
将无法正确处理它。@AndrewWhitaker它在字符串中。现在我该怎么办?您可以将数据类型更改为
int
,或者自己在属性的“getter”中格式化字符串