C# XPTable 带图片的增删改查(XPTable控件使用说明十三)

部署运行你感兴趣的模型镜像

        今天完成了一个DEMO, XPtable直接增删改查,带富文本图片,这就是XPtable的优势。需要提示的是关于图片编辑后的保存:使用焦点,过滤掉逐条选择显示图片变化冗余保存数据库。

全部代码:

using System.Security.Policy;
using XPTable.Models;


namespace XPTableUIDemo
{
    public partial class Form1 : Form
    {

        public Models.carContext db = new Models.carContext();

        public Form1()
        {
            InitializeComponent();
            xptable_display();
        }

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

        // 用户选择表格,读取对象,显示图片
        private void table1_SelectionChanged(object sender, XPTable.Events.SelectionEventArgs e)
        {

            XPTable.Models.Row r = e.TableModel.Selections.SelectedItems.FirstOrDefault();

            var one = db.Materials.Where(c => c.id == (long)r.Cells[0].Data).FirstOrDefault();

            if (one.rtf != null)
            {
                richTextBox1.Rtf = System.Text.Encoding.Default.GetString(one.rtf);
            }
            else
            {
                richTextBox1.Rtf = "";
            }
        }

        //改数据一个字段,保存一个对象
        private void table1_EditingStopped(object sender, XPTable.Events.CellEditEventArgs e)
        {
                var one = db.Materials.Where(c => c.id == i(tableModel1.Rows[e.Row].Cells[0].Data)).FirstOrDefault();
                one.name = tableModel1.Rows[e.Row].Cells[1].Text;
                one.value = i(tableModel1.Rows[e.Row].Cells[2].Data);

                one.rtf = System.Text.Encoding.Default.GetBytes(richTextBox1.Rtf);  
                db.SaveChanges();
                downtxt.Text = "数据已经保存!";          
        }


        //用户的焦点,在图片框改变图片,保存到数据库(使用焦点,过滤掉逐条选择显示图片变化)
        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            if (richTextBox1.Focused)
            {
                XPTable.Models.Row r = tableModel1.Selections.SelectedItems.FirstOrDefault();

                var one = db.Materials.Where(c => c.id == (long)r.Cells[0].Data).FirstOrDefault();                               

                one.rtf = System.Text.Encoding.Default.GetBytes(richTextBox1.Rtf);  
                db.SaveChanges();
                downtxt.Text = r.Cells[0].Data.ToString() + " " + DateTime.Now.Ticks.ToString();
            }
        }

        //新增一条数据
        private void button1_Click(object sender, EventArgs e)
        {
            db.Materials.Add(new Models.Material());
            db.SaveChanges();
            xptable_display();
        }

        //显示table数据
        private void xptable_display()
        {

            columnModel1.Columns.Clear();
            columnModel1.Columns.Add(new NumberColumn("ID", 50));
            columnModel1.Columns.Add(new TextColumn("名称", 150));
            columnModel1.Columns.Add(new NumberColumn("价格", 100));

            tableModel1.Rows.Clear();
            foreach (var item in db.Materials)
            {
                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.name));
                r.Cells.Add(new XPTable.Models.Cell(item.value));
            }
        }

        //删除一条数据
        private void button2_Click(object sender, EventArgs e)
        {            
              DialogResult result = MessageBox.Show("确认要执行此操作吗?", "确认对话框", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

           if (result == DialogResult.Yes)
            {
                XPTable.Models.Row r = tableModel1.Selections.SelectedItems.FirstOrDefault();

                var one = db.Materials.Where(c => c.id == (long)r.Cells[0].Data).FirstOrDefault();
                if (one != null)
                {
                    db.Materials.Remove(one);
                    db.SaveChanges();
                    xptable_display();
                }


            }
        }
    }
}

您可能感兴趣的与本文相关的镜像

Qwen-Image-Edit-2509

Qwen-Image-Edit-2509

图片编辑
Qwen

Qwen-Image-Edit-2509 是阿里巴巴通义千问团队于2025年9月发布的最新图像编辑AI模型,主要支持多图编辑,包括“人物+人物”、“人物+商品”等组合玩法

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、付费专栏及课程。

余额充值