0

我有一个数据网格和一个数据表。数据网格中的值来自数据表。现在单元格值在decimal,我想将格式更改为小数点后 2 位,但这是我的问题,并非所有单元格值都是整数,它也包含STRING VALUE类似N/A.

这是我填充数据的示例数据网格:

Name    |   Col1        |   Col2        |
-----------------------------------------
xxx     |   N/A         |    N/A        |
yyy     |   12.1999999  |    23.012355  |
zzz     |   0.12366666  |    12.357878  |

我已经试过了

datagrid.columns(1).DefaultCellStyle.Format = "N2"
datagrid.columns(2).DefaultCellStyle.Format = "N2"

但是单元格值没有改变格式,我知道问题在于单元格值包含字符串。还有其他方法可以绕过该字符串吗?

4

2 回答 2

1

在获胜表单中,您可以使用单元格格式化事件。根据您的示例,您可以跳过第一列,然后检查您尝试格式化的值是数字还是“N/A”或其他任何值 - 如果它是数字则适当格式化......

Private Sub YourGrid_CellFormatting(sender As Object, _
    e As DataGridViewCellFormattingEventArgs) _
    Handles YourGrid.CellFormatting

    If YourGrid.Columns(e.ColumnIndex).Index > 0
            If isnumeric(e.Value) Then
                e.CellStyle.Format = "N2"
            End If
    End if

End Sub
于 2013-10-18T20:18:25.607 回答
0

我认为您可以在将数据设置为网格数据源之前对其进行格式化,也可以在绑定数据时格式化显示

如果你在 asp.net 上工作,你可以尝试事件 onrowdatabound

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
    {

      if(e.Row.RowType == DataControlRowType.DataRow)
      {
        // Display the company name in italics.
        if(your condition)

        e.Row.Cells[1].Text = "<i>" + e.Row.Cells[1].Text + "</i>";

      }

如果您使用我认为类似的 win 表格,当您从数据或任何地方获取结果时,可以格式化事件或格式

于 2013-09-18T08:23:44.380 回答