找回密码
 立即注册

QQ登录

只需一步,快速开始

xdeng@abeam.com

注册会员

3

主题

6

帖子

97

积分

注册会员

积分
97
最新发帖
xdeng@abeam.com
注册会员   /  发表于:2016-12-27 13:34  /   查看:4648  /  回复:5
现在客户有个需求,在C1FlexGrid的日期类型的列输入内容时,想省略年的前两位,例如要输入2016/12/27的时候,只输入16/12/27。试过了很多方法都不行,如果指定了EditMask=‘99/99/99’,可以按照上面所要求的格式输入,但是日期选择框就弹不出来了,如果设置Format=‘yy/mm/dd’,显示没有什么问题,但是光标进入单元格和弹出日期选择框的时候还是yyyy/mm/dd格式,不能做到一致。C1FlexGrid的日期类型的列有没有类似DateTimePicker 控件的CustomFormat属性,可以控制日期格式的属性呢?

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-12-27 14:13:26
沙发
谢谢您的反馈。
根据您的提示设置Format为"yy/mm/dd",没有重现您提到的进入编辑状态格式不一致的问题。
测试版本:2016V3.
测试代码:
c1FlexGrid1.Cols[1].Caption = "Date";
               c1FlexGrid1.Cols[1].DataType = typeof(DateTime);
               c1FlexGrid1.Cols[1].Format = "yy/mm/dd HH:mm";
测试结果:

如果和您的测试有所不同,请提供可以重现问题的Demo。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
xdeng@abeam.com
注册会员   /  发表于:2017-1-5 12:06:34
板凳
因为前两天休假回复晚了,不好意思。
代码实现效果如图。
具体代码如下。
        private void c1FlexGrid_StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
        {
            if (e.Row < 0 || e.Row >= c1FlexGrid.Rows.Count || e.Col < 0 || e.Col >= c1FlexGrid.Cols.Count)
            {
                return;
            }

            if (c1FlexGrid.Cols[e.Col].DataType == typeof(DateTime))
            {
                if (c1FlexGrid.Rows[e.Row][e.Col] == null || string.IsNullOrEmpty(c1FlexGrid.Rows[e.Row][e.Col].ToString()))
                {
                    return;
                }
                DateTime date = DateTime.Now.Date;
                DateTimePicker dateTimePicker = new DateTimePicker();
                c1FlexGrid.Editor = dateTimePicker;
                dateTimePicker.MinDate = date;
                //dateTimePicker.MaxDate = DateTime.Parse("2050/12/31");
                dateTimePicker.Value = date;
                dateTimePicker.Format = DateTimePickerFormat.Custom;
                dateTimePicker.CustomFormat = "yy/MM/dd";
            }
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-1-5 12:29:54
地板
xdeng@abeam.com 发表于 2017-1-5 12:06
因为前两天休假回复晚了,不好意思。
代码实现效果如图。
具体代码如下。

谢谢您的反馈。
从您提供的代码和图片来看,您使用的是DateTimPicker作为Editor的方式。而不是直接用的表格的DateTime类型。
所以当进入编辑状态的时候,控制权就有DateTimePicker控件。这是微软的标准控件,您可以到msdn查阅下这个控件的相关设置,如何将这个控件下拉框中的日期格式改成您需要的格式。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
xdeng@abeam.com
注册会员   /  发表于:2017-1-5 13:26:24
5#
用您提供的代码试了一下,效果是一样的。
        private void c1FlexGrid_StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
        {
            if (e.Row < 0 || e.Row >= c1FlexGrid.Rows.Count || e.Col < 0 || e.Col >= c1FlexGrid.Cols.Count)
            {
                return;
            }

            if (c1FlexGrid.Cols[e.Col].DataType == typeof(DateTime))
            {
                if (c1FlexGrid.Rows[e.Row][e.Col] == null || string.IsNullOrEmpty(c1FlexGrid.Rows[e.Row][e.Col].ToString()))
                {
                    return;
                }
                c1FlexGrid.Cols[e.Col].DataType = typeof(DateTime);
                c1FlexGrid.Cols[e.Col].Format = "yy/MM/dd";
                //DateTime date = DateTime.Now.Date;
                //DateTimePicker dateTimePicker = new DateTimePicker();
                //c1FlexGrid.Editor = dateTimePicker;
                //dateTimePicker.MinDate = date;
                ////dateTimePicker.MaxDate = DateTime.Parse("2050/12/31");
                //dateTimePicker.Value = date;
                //dateTimePicker.Format = DateTimePickerFormat.Custom;
                //dateTimePicker.CustomFormat = "yy/MM/dd";
            }
        }
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-1-5 13:44:12
6#
xdeng@abeam.com 发表于 2017-1-5 13:26
用您提供的代码试了一下,效果是一样的。
        private void c1FlexGrid_StartEdit(object sender, C1. ...

里面用的是DateTimePicker,只能定制进入编辑状态的格式,打开下拉框后日历的样式无法定制。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部