【问题标题】:how to save image from RepositoryItemPictureEdit in DevExpress gridControl to sql database如何将DevExpress gridControl中的RepositoryItemPictureEdit中的图像保存到sql数据库
【发布时间】:2019-03-11 07:41:44
【问题描述】:

我曾经使用此代码将图像从 DevExpress PictureEdit 保存到 SQL 数据库

byte[] Picture;
MemoryStream ms = new MemoryStream();
pictureEdit.Image.Save(ms, ImageFormat.Jpeg);
Picture = ms.ToArray();

现在我有了 gridControl,其中有一列“图像”

void CreateImageTable()
    {
        dtimage.Columns.Add("Image", typeof(Image));

        gridControl4.DataSource = dtimage;
    }

我使用此代码将图像添加到 gridControl

        private void simpleButton1_Click(object sender, EventArgs e)
    {
        var ofd = new XtraOpenFileDialog();
        ofd.Multiselect = true;
        ofd.Filter = "Image|*.JPG;*.BMP;*.PNG;*.JPEG;*.GIF";
        ofd.Title = Resources.insertImage;
        ofd.ShowDialog();
        for (int z = 0; z < ofd.FileNames.Length; z++)
        {
            Image img = Image.FromFile(ofd.FileNames[z]);
            DataRow row = dtimage.NewRow();
            row[0] = img;
            dtimage.Rows.Add(row);
        }
    }

现在我创建了`

  RepositoryItemPictureEdit imgdaged = new RepositoryItemPictureEdit();
  gridControl4.RepositoryItems.Add(imgdaged);
        imgdaged.SizeMode = PictureSizeMode.Zoom;
        imgdaged.NullText = " ";
        imgdaged.PictureStoreMode = PictureStoreMode.ByteArray;
        imgdaged.ContextMenuStrip = new ContextMenuStrip();
        gridView4.Columns["Image"].ColumnEdit = imgdaged;

但是当我尝试使用此代码时

imgdaged.Image.Save(ms, ImageFormat.Jpeg);

我收到此错误:CS1061“RepositoryItemPictureEdit”不包含“Image”的定义,并且找不到接受第一个类型参数的可访问扩展方法“Image”(您是否缺少 using 指令或程序集引用? ) 这是我执行存储过程的代码

public void AddRawMaterialRecommendationImage(int FK_OrderNumber, string UserID, DateTime CreationDate,byte[] RawDamagedimage)
    {
        DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
        DAL.Open();
        SqlParameter[] param = new SqlParameter[4];

        param[0] = new SqlParameter("@FK_OrderNumber", SqlDbType.Int);
        param[0].Value = FK_OrderNumber;

        param[1] = new SqlParameter("@UserID", SqlDbType.NVarChar, 50);
        param[1].Value = UserID;

        param[2] = new SqlParameter("@CreationDate", SqlDbType.Date);
        param[2].Value = CreationDate;

        param[3] = new SqlParameter("@RawDamagedimage", SqlDbType.Image);
        param[3].Value = RawDamagedimage;

        DAL.ExcuteCommande("AddRawMaterialRecommendationImage", param);
        DAL.Close();

    }

我尝试使用此代码,但不幸的是对我不起作用

for (int i = 0; i < dtimage.Rows.Count; i++)
            {
                var row = dtimage.Rows[i];
                byte[] imageBytes = Encoding.Unicode.GetBytes(row["Image"].ToString());
                MemoryStream ms = new MemoryStream();
                imageBytes = ms.ToArray();
                damaged.AddRawMaterialRecommendationImage(Convert.ToInt32(txtBon.Text), Program.UserID, DateTime.Now, imageBytes);
            }

我该如何解决这个问题,在此先感谢。

【问题讨论】:

    标签: c# sql-server winforms devexpress


    【解决方案1】:

    我得到了解决方案,这是有效的代码:

    for (int i = 0; i < dtimage.Rows.Count; i++)
                {
                    var row = dtimage.Rows[i];
                    Image img = (Bitmap)row["Image"];
                    byte[] Picture;
                    MemoryStream ms = new MemoryStream();
                    img.Save(ms, ImageFormat.Jpeg);
                    Picture = ms.ToArray();
                    damaged.AddRawMaterialRecommendationImage(Convert.ToInt32(txtBon.Text), Program.UserID, DateTime.Now, Picture);//row["Image"]
    
                }
    

    我已删除 RepositoryItemPictureEdit 。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多