加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 当gridview具有autogeneratecolumns = true时,如何更改dat

发布时间:2020-12-15 22:08:13 所属栏目:百科 来源:网络整理
导读:我根据搜索参数在gridview中自动生成列,将添加或删除少量列. 请建议我为gridview中的整个列设置日期格式为dd-mmm-yyyy. 现在,我正在使用rowdatabound.它检查每一行,因此显示结果需要时间. 这就是我在rowdatabound中所做的 if (e.Row.RowType == DataControlR
我根据搜索参数在gridview中自动生成列,将添加或删除少量列.

请建议我为gridview中的整个列设置日期格式为dd-mmm-yyyy.

现在,我正在使用rowdatabound.它检查每一行,因此显示结果需要时间.

这就是我在rowdatabound中所做的

if (e.Row.RowType == DataControlRowType.DataRow)
{
        System.Data.DataRowView dtview;
        DateTime dt;
        int intCounter;
        dtview = (DataRowView)e.Row.DataItem;

        for (intCounter = 0; intCounter <= dtview.Row.ItemArray.Length - 1; intCounter++)
        {
            if (dtview.Row.ItemArray[intCounter] is System.DateTime)
            {
                dt = (DateTime)dtview.Row.ItemArray[intCounter];
                e.Row.Cells[intCounter].Text = dt.ToString("dd-MMM-yyyy");
            }
        }
    }

这将检查所有记录,然后根据条件进行更改.

但我想做得更好,只需识别列并更改完整列的日期格式.

解决方法

免责声明:我自己没试过,但看起来很可能.

GridView有一个名为ColumnsGenerator的公共属性,其属性类型为IAutoFieldGenerator.这是确定如何生成列的对象.

已经有IAutoFieldGenerator的实现,默认的一个:GridViewColumnsGenerator.这是一个公开的非密封类,您可以从中派生出类型.

您必须覆盖的方法是这样的:

public override List<AutoGeneratedField> CreateAutoGeneratedFields(
      object dataObject,Control control);

注意输出,List< T> AutoGeneratedField. AutoGeneratedField有一个名为DataFormatString的属性:

public override string DataFormatString { get; set; }

所以你要做的就是覆盖CreateAutoGeneratedFields,如下所示:

public class MyDerivedGridViewColumnsGenerator : GridViewColumnsGenerator
{
   public override List<AutoGeneratedField> CreateAutoGeneratedFields(
      object dataObject,Control control)
   {
       var list = base.CreatedAutoGeneratedFields(dataObject,control);
       foreach(var field in list)
       {
         if(field.DataType == typeof(DateTime))
             field.DataFormatString = "dd-MMM-yyyy";
       }
       return list;
   }
}

现在,我不清楚如何设置ColumnsGenerator属性,因此您可能必须在代码中执行此操作.但这应该相当简单,因为GridViewColumnsGenerator有一个无参数构造函数:

// GridView myGridView;
 myGridView.ColumnsGenerator = new MyDerivedGridViewColumnsGenerator();

我会在绑定到GridView之前设置它,所以它在创建列时就到位了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读