Saya dulu menggunakan kode ini untuk menyimpan gambar dari DevExpress PictureEdit ke database SQL

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

Sekarang saya memiliki gridControl dengan satu kolom "Gambar"

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

        gridControl4.DataSource = dtimage;
    }

Dan saya menggunakan kode ini untuk menambahkan gambar ke 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);
        }
    }

Sekarang saya membuat `

  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;

Tetapi ketika saya mencoba menggunakan kode ini

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

Saya mendapatkan kesalahan ini: CS1061 'RepositoryItemPictureEdit' tidak mengandung definisi untuk 'Gambar' dan tidak ada metode ekstensi yang dapat diakses 'Gambar' menerima argumen tipe pertama yang dapat ditemukan (apakah Anda melewatkan arahan penggunaan atau referensi Majelis?) ini kode saya untuk menjalankan prosedur tersimpan

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();

    }

Saya mencoba menggunakan kode ini tetapi sayangnya tidak berhasil untuk saya

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);
            }

Bagaimana saya bisa mengatasi masalah ini, Terima kasih sebelumnya.

0
M.Bouabdallah 11 Maret 2019, 10:41

1 menjawab

Jawaban Terbaik

Saya mendapat solusinya, Ini kode yang berfungsi:

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"]

            }

Saya telah menghapus RepositoryItemPictureEdit .

0
M.Bouabdallah 11 Maret 2019, 10:47