C# 按数据类型格式化GridView列

C# 按数据类型格式化GridView列,c#,winforms,C#,Winforms,嗨,我正在开发一个小型winforms应用程序,我更像是一个web开发人员,所以请原谅我的无知 基本上,我有一堆GridView,我是从代码背后绑定的,比如: var con = new SelectOrdersLineItemByOrder() { ConnectionString = ConStr, fk_OrderID = Id }; DataSet ds = con.ExecuteDataSet(); gvVendors.DataSourc

嗨,我正在开发一个小型winforms应用程序,我更像是一个web开发人员,所以请原谅我的无知

基本上,我有一堆GridView,我是从代码背后绑定的,比如:

        var con = new SelectOrdersLineItemByOrder() { ConnectionString = ConStr, fk_OrderID = Id };
        DataSet ds = con.ExecuteDataSet();
        gvVendors.DataSource = ds.Tables[0];
目前我正在格式化列,如下所示:

        gvVendors.Columns[5].FormatString = "{0:dd/MM/yyyy}";
因为没有更好的词,这是一个痛苦的屁股

有没有一种方法可以连接事件处理程序或在事件发生后进行迭代,并说:

        foreach (column c in gvVendors)
        {
            if(c is DateTime) { Format Accordingly ... }
            if(c is Decimal) { Format Accordingly ... }
        }            

非常感谢您的帮助……

您只需编写一个自己的方法,如FormatGrid(),它为您执行所有格式设置,并在为其分配数据源后调用它。像

     var con = new SelectOrdersLineItemByOrder() { ConnectionString = ConStr, fk_OrderID = Id };
    DataSet ds = con.ExecuteDataSet();
    gvVendors.DataSource = ds.Tables[0];
    FormatGrid();
可以使用以下属性设置格式

DataGridViewCellStyle.Format
不需要在列中循环。您知道列名,它们不会动态更改,所以

   dataGridView1.Columns["YourColumnName"]

应该足够了。

你就快到了。迭代列,GridViewWhat命名空间上必须有某种格式属性
gvVendors
?@DourHighArch这是GridViewWhat命名空间;至少有4个名为“GridView”的不同类。
System.Windows.Controls.GridView.Columns
的迭代器是
System.Windows.Controls.GridViewColumn
,不能是
DateTime
或任何其他类型,所以我不明白你发布的内容是如何编译的。@DourHighArch System.Windows.Forms.datagridview我知道这基本上就是我目前正在做的事情。我希望迭代列(因为在多个实例中有allot),并拥有一个全局函数,该函数根据列数据类型而不是硬编码的列名进行格式化then@bumble_bee_tuna类似dataGridView1.Columns[“YourColumnName”].ValueType=typeof(DateTime);