C# XPTable 日期字段处理(XPTable控件使用说明十三)

1、SQLite数据库定义为日期类型

2、XPtable中日期字段定义与显示

 //显示时间表
 columnModel1.Columns.Clear();
 columnModel1.Columns.Add(new NumberColumn("id", 30));

 NumberColumn numberColumn = new NumberColumn("次数", 50);
 numberColumn.Maximum = 10000;
 columnModel1.Columns.Add(numberColumn);

 NumberColumn numberColumn2 = new NumberColumn("公里", 80);
 numberColumn2.Maximum = 9999999;
 columnModel1.Columns.Add(numberColumn2);

 DateTimeColumn dateTimeColumn = new DateTimeColumn("日期", 120);
 dateTimeColumn.CustomDateTimeFormat = "yyyy.MM.dd";
 columnModel1.Columns.Add(dateTimeColumn);

 tableModel1.Rows.Clear();
 foreach (var item in FormHome.db.Times.Where(p => p.carid == one.id).OrderBy(p => p.times))
 {
     XPTable.Models.Row r = new XPTable.Models.Row();
     tableModel1.Rows.Add(r);

     r.Cells.Add(new XPTable.Models.Cell(item.id));
     r.Cells.Add(new XPTable.Models.Cell(item.times));
     r.Cells.Add(new XPTable.Models.Cell(item.km));
     r.Cells.Add(new XPTable.Models.Cell(item.zdate.Value)); 

 }

3、保存到数据库中

        // 时间编辑停止:id,次数,公里,日期
        private void table1_EditingStopped(object sender, XPTable.Events.CellEditEventArgs e)
        {
            var tmp = FormHome.db.Times.Where(c => c.id == MT.i(tableModel1.Rows[e.Row].Cells[0].Data)).FirstOrDefault();

            tmp.carid = one.id;                
            tmp.times = MT.i(tableModel1.Rows[e.Row].Cells[1].Data);
            tmp.km = MT.i(tableModel1.Rows[e.Row].Cells[2].Data);
            tmp.zdate = MT.ddd(tableModel1.Rows[e.Row].Cells[3].Data);

       
            FormHome.db.SaveChanges();
            FormHome.downtxt.Text = "数据已经保存!";   


        }

4、自己的函数处理一下转换


        public static int i(object x1)
        {
            return Convert.ToInt32(x1);

        } 

        public static string s(object x1)
        {
            return Convert.ToString(x1);

        }

        public static Decimal d(object x1)
        {
            return Convert.ToDecimal(x1);

        }


        public static DateTime ddd(object x1)
        {
            return Convert.ToDateTime(x1);

        }

XPTable的大名,想必C#开发的人都有所耳闻,使用下来确实强大,在表格中添加下拉列表、进度条、图标等非常容易,灵活方便。 XPTable最重要的是开源,可根据自己的需要修改,有bug也可想办法解决,我就对其进行了若干处改进,使其更好用了。源代码写的非常标准,架构设计也很值得借鉴,研读源代码也是个学习提高的过程。真心感谢将如此完美的代码公开分享的人,最为点滴回报,也将自己修改后的源码放出,供大家参考,和原作者的贡献比起来,我这点小小的修改就如沧海一粟,不足为道了。 我修改过的代码和解决的问题列示如下: 1、...\Models\Table.cs Line 2118,2153 解决问题:否则在某些情况下(任意调整窗口大小,XPTable的Anchor设置为随窗口大小自适应调整)会抛System.ArgumentOutOfRangeException异常,vScrollBar.LargeChange不能小于0 2、...\Models\Table.cs Line 5598,5606 解决问题:在列头Resizing状态下双击鼠标,应根据该列数据中最长的一行调整当前列宽度,目前仅对TextColumn和NumberColumn有效 3、...\Models\Table.cs Line 6134 解决问题:在列头Resizing状态下单击鼠标,避免OnMouseUp激发列宽的调整。应该双击或者调整宽度后才能激发 4、...\Models\Table.cs Line 6373 解决问题:根据原代码,如果Table允许多选,选中多行后,点鼠标右键将自动选择鼠标所在行,修改后,多选的行依然选中 这个问题借鉴了“恶猫的尾巴”的代码:http://emao.me/tag/XpTable/,在此感谢! 5、...\Models\Table.cs Line 6627 解决问题:鼠标在列头为Resizing图标时,移动到数据区域不会自动变为默认图标 6、...\Models\Table.cs Line 7229 解决问题:解决列头的对齐方式始终是靠左的问题 7、...\Renderers\NumberCellRenderer.cs Line 661 解决问题:为了实现Table.cs的函数CalColumnWidth中实现对NumberColumn列格式化数据宽度的计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值