devexpress datagrid 与imageEdit以及如何存图片到数据库

题外话


有的时候,需要把图片存入数据库。


这样做,有好处,当然也有坏处。


好处是,如果图片存在数据库,则后期维护方便得多。

因为如果文件存在磁盘上,那么随着开发时间的增加,最后我们难以分辨哪些图片文件是有用的,哪些不是。


如果存在数据内部,则好管理得多。


然而存在数据库内部,会导致我们程序启动和加载困难。

所以,这里需要有取舍与限制和缓存。


不过,对于程序,我更希望前期多费点劲,后期少维护。


人们常说,行百里路者半九十。

但做程序,可不能这样,如果眼看着要做成了,但几个小问题搞得痛不欲生(要是遇上性能问题,就更傻眼)。

还不如,压住节奏,稳扎稳扎。

毕竟程序与行路,还是有很大差别的。最后十里,咬咬牙也就走过去了,可是许多程序,走不过最后几步。


所以,我宁愿图片存入数据库。


一般来讲,我会倾向于CS结构,因为这种程序,给用户的感知好,并且能减小服务器压力。

如果图片存在数据库,最好在Client端,把图片进行缓存,比如存到本地数据库或本地磁盘。


当然,本文不讲这些事情。下面回正题。


问题的提出与解决

首先建立了一个数据库的表,这个表中,有一个字段是image类型(SQL Server数据库)

USE [SchedulerDB]
GO

/****** Object:  Table [dbo].[Resources]    Script Date: 11/19/2014 10:16:03 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Resources]') AND type in (N'U'))
DROP TABLE [dbo].[Resources]
GO

USE [SchedulerDB]
GO

/****** Object:  Table [dbo].[Resources]    Script Date: 11/19/2014 10:16:03 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Resources](
	[UniqueID] [int] IDENTITY(1,1) NOT NULL,
	[ResourceID] [int] NOT NULL,
	[ResourceName] [nvarchar](50) NULL,
	[Color] [int] NULL,
	[Image] [image] NULL,
	[CustomField1] [nvarchar](max) NULL,
 CONSTRAINT [PK_Resources] PRIMARY KEY CLUSTERED 
(
	[UniqueID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'岗位' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Resources'
GO



然后与datagrid进行了映射。


然后,在image字段上,绑定一个ImageEdit编辑控件。


然后运行,


然后,就得到这个错误:Object must implement IConvertible

网上找了找,没有。

然后我就试了试


把PictureStoreMode改成ByteArray

然后就OK了。


对了,保存所对应的代码为:

 

       void saveToolStripButton_Click(object sender, EventArgs e)
        {
 
            this.Validate();
            this.resourcesBindingSource.EndEdit();
            this.resourcesTableAdapter.Update(this.schedulerDBDataSet);
            schedulerDBDataSet.AcceptChanges();
        }

====================

有同仁问关于图像大小如何自适应,实际我也不会。

不过,这张图,也许有用,所以放在这里:


==========

后面又找了找:

在例子:

C:\Users\Public\Documents\DevExpress Demos 17.1\Components\WinForms\CS\GridMainDemo


demo center  的 winforms


--


也是同样的道理。

路径在:

C:\Users\Public\Documents\DevExpress Demos 17.1\Components\WinForms\CS\GridMainDemo



谢谢您的阅读。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值