using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace datatable
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataTable table = GetTable();
foreach (DataRow row in table.Rows)
{
ListViewItem item = new ListViewItem(row.ToString());
for (int i = 1; i < table.Columns.Count; i++)
{
item.SubItems.Add(row[i].ToString());
}
listView1.Items.Add(item);
}
}
static DataTable GetTable()
{
DataTable table = new DataTable();
table.Columns.Add("Picture", typeof(byte));
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
table.Clear();
byte[] imgbyte;
//แอดไฟล์รูปเข้ามาลองแปลงเปง byte แล้ว add เข้า datatable แต่แปลงแล้วยังติด bug ไม่ทราบด้วยสาเหตุประการใด ถ้าพี่เต้จะลองรูปก็ลองเปลี่ยน path ไปที่ๆพี่เต้เซฟรูปล่ะกานครับ
Image image1 = Image.FromFile("C:\\Users\\Siripong.S\\Pictures\\97099.jpg"); // เปงที่อยู่ของไฟล์รูปที่นำมาแปลงเป็น byte เพื่อเก็บลง data table ชั่วคราว
imgbyte = ImageToByte(image1);
table.Rows.Add(imgbyte, 25, "Indocin", "David", DateTime.Now); //รายละเอียดต่างๆ
return table;
}
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
}
}
ติดแค่ exception
มันขึ้นว่า Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'.Couldn't store <System.Byte[]> in Picture Column. Expected type is Byte.
แล้วผมก็ลอง แก้จาก byte[] เปง byte
มันจะขึ้นว่า 'ImageConverter' is unable to convert 'System.Drawing.Bitmap' to 'System.Byte'.
ซึ่งก็พยายามหลายครั้งแล้ว
ใครมีวิธีจะนำ image ลง data table แล้วนำขึ้นมาโชว์ได้ ช่วยแนะนำผมทีครับ
จะเปงพระคุณอย่างสูง ขอบคุณครับ
Tag : .NET, Win (Windows App)
Date :
2012-04-12 15:10:37
By :
T-LINK
View :
1521
Reply :
1
No. 1
Guest
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace datatable
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataTable table = GetTable();
foreach (DataRow row in table.Rows)
{
ListViewItem item = new ListViewItem(row.ToString());
for (int i = 1; i < table.Columns.Count; i++)
{
item.SubItems.Add(row[i].ToString());
}
listView1.Items.Add(item);
}
}
static DataTable GetTable()
{
DataTable table = new DataTable();
table.Columns.Add("Picture", typeof(byte));
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
table.Clear();
byte[] imgbyte;
//แอดไฟล์รูปเข้ามาลองแปลงเปง byte แล้ว add เข้า datatable แต่แปลงแล้วยังติด bug ไม่ทราบด้วยสาเหตุประการใด
Image image1 = Image.FromFile("C:\\Users\\Siripong.S\\Pictures\\97099.jpg"); // เปงที่อยู่ของไฟล์รูปที่นำมาแปลงเป็น byte เพื่อเก็บลง data table ชั่วคราว
imgbyte = ImageToByte(image1);
table.Rows.Add(imgbyte, 25, "Indocin", "David", DateTime.Now);
return table;
}
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
}
}
ติดแค่ exception
มันขึ้นว่า Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'.Couldn't store <System.Byte[]> in Picture Column. Expected type is Byte.
แล้วผมก็ลอง แก้จาก byte[] เปง byte
มันจะขึ้นว่า 'ImageConverter' is unable to convert 'System.Drawing.Bitmap' to 'System.Byte'.