PDA

View Full Version : سوال: فراخوانی عکس از بانک و نمایش در دیتا گرید



ICANICAN
جمعه 09 تیر 1391, 08:02 صبح
با سلام
من درباره این سوالام سرچ کردم اما همه راهنمایی ها در باره vbیا aspیا دلفی بود .
من عکس ها رو در بانک به فرمت رشته ذخیره کردم یعنی مسیر فایل رو دادم . به صورت imageذخیره نکردم الان برای فراخوانی عکس در دیتا گرید نمیدونم چه جوری باید اون مسیر روبه تصویر تبدیل کنم و داخل دیتا گرید نشون بدم لطفا منو راهنمایی کنید .

ma.rad
جمعه 09 تیر 1391, 10:39 صبح
سوالتون واضح نیست.شما آدرس عکس رو در بانک ذخیره کردید یا خود عکس رو ؟

ma.rad
جمعه 09 تیر 1391, 10:42 صبح
مثلا اگر عکس ها در پوشه pic کنار برنامه باشه واسم فایل داخل بانک باشه:
pictureBox1.Load(Application.StartupPath + "\\Pic\\" + dt.Rows[0]["PicName"].ToString() + ".bmp");

veniz2008
جمعه 09 تیر 1391, 11:32 صبح
سلام،منم مشکل دوستمون رو دارم، من مسیر عکس رو درون بانک ذخیره کردم( بصورت C:\Users\Public\Pictures\Sample Pictures\Desert.jpg )،حالا درون دیتاگرید یک ستون جدید از نوع DataGridViewImageColumn رو به گرید اضافه کردم و خاصیت datapropertyname اونو برابر با فیلد عکس خودم قرار دادم ولی موقع نمایش خطای زیر رو میده،کجای کارم اشتباهه؟(اینم بگم که فقط مسیر رو ذخیره کردم و خود عکس رو به پروژه اضافه نکردم)
88923

ICANICAN
جمعه 09 تیر 1391, 11:37 صبح
ادرس عکس رو در بانک ذخیره کردم .میخوام موقع فراخوانی داخل دیتا گرید عکس رو ببینم.

ma.rad
جمعه 09 تیر 1391, 11:47 صبح
کاش یه جستجو می کردید :
http://barnamenevis.org/showthread.php?287712-%D9%86%D8%AD%D9%88%D9%87-%D9%84%D9%88%D8%AF-%D8%B9%DA%A9%D8%B3-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB%8C%D8%AF%2 8DataGridViewImageColumn%29&highlight=%D8%B9%DA%A9%D8%B3+%D8%AF%D8%B1+%D8%AF%D B%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB%8C%D8%AF

تو قسمت نمونه برنامه ها ،یه نمونه هست.

veniz2008
جمعه 09 تیر 1391, 12:20 عصر
من لینکی رو که گذاشتید دیدم،الان یه مشکل دارم،اگر فقط بخوام عکس رو نشون بدم(یعنی بقیه فیلدها رو دورن گرید نشون ندم مشکلی نیست و عکس داخل گرید نمایش داده میشه ولی زمانیکه میخوام همه فیلدها رو بهمراه عکس نشون بدم به مشکل برمیخورم،همون خطای بالا)،هرچی فکر میکنم نمیتونم کد رو طوری تغییر بدم تا همزمان تمام فیلدها رو داشته باشم، اینم کدی که استفاده میکنم:

SqlConnection con = new SqlConnection("Data source =(local);initial catalog = testgrid;integrated security = true");
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from student", con);
DataTable dt = new DataTable();
da.Fill(dt);
string pic = dt.Rows[0][4].ToString();
dataGridView1.DataSource = dt;
dataGridView1.Rows[0].Cells[5].Value = Image.FromFile(pic);
con.Close();
یه سوال دیگه هم دارم،حالا اگه مثلا 5 تا رکورد داشته باشم و هر رکورد هم عکس خودش رو داشته باشه چطوری باید تمام رکوردها رو بهمراه عکسشون نشون داد؟

Y_Safaiee
جمعه 09 تیر 1391, 12:40 عصر
با سلام خدمت شما دوست عزیز

یکی از فیلدها(ستون ها رو ار نوع ایمیج انتخاب کنید و سپس فقط 1 خط برنامه لازم دارید



dataGridView1.Rows[0].Cells[1].Value = Image.FromFile(dataGridView1.Rows[0].Cells[0].Value.ToString());


موفق باشید
بایت بایت

veniz2008
جمعه 09 تیر 1391, 16:09 عصر
با سلام خدمت شما دوست عزیز

یکی از فیلدها(ستون ها رو ار نوع ایمیج انتخاب کنید و سپس فقط 1 خط برنامه لازم دارید



dataGridView1.Rows[0].Cells[1].Value = Image.FromFile(dataGridView1.Rows[0].Cells[0].Value.ToString());


موفق باشید
بایت بایت
دوست عزیز ،من یه ستون از نوع image به گرید اضافه کردم تا عکس ها رو نشون بده(ایندکس این ستون 5 هست)،کدی که شما گذاشتید آیا همه رکوردها رو پوشش میده؟،آیا آدرس عکس رو که درون جدول ذخیره کردم پیدا میکنه؟،من یک عکس از گرید خودم میزارم تا بهتر منظور خودمو برسونم،همونطوری که درعکس می بینید به جای عکس ها علامت ضربدر قرار داره(درواقع نمیتونه عکس رو پیدا کنه)،در یک کلام من میخوام مشخصات رکورد رو به همراه عکس هر رکورد داشته باشم.
88933

Y_Safaiee
جمعه 09 تیر 1391, 17:01 عصر
با سلام مجدد خدمت شما

آره به سادگی قابل پیاده سازی است



for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
string path = مسیر عکس ;
dataGridView1.Rows[a].Cells[5].Value = Image.FromFile(path);

}


موفق باشی
بایت بایت

veniz2008
جمعه 09 تیر 1391, 17:31 عصر
دوست عزیز اگه کدهایی رو که در بالا گذاشته بودم نگاه کنید من همین کدی رو که شما گفتید نوشتم،اگر فقط بخوام فیلد عکس رو نشون بدم این کد درست کار میکنه ولی زمانیکه میخوام علاوه بر عکس بقیه فیلدها رو هم نمایش بدم به خطا برمیخورم.ممنون میشم راهنمایی کنید.

Y_Safaiee
جمعه 09 تیر 1391, 18:23 عصر
با سلام مجدد

برات یه سمپل کد نوشتم و ضمیمه کامنتم کردم انشاالله کمکت کنه,یکمم برات حرفه ایش کردم یعنی دیگه فیلد "آدرس عکس" نمایش داده نمیشه و با ارسال کوئری خود عکس نمایش داده میشه

اینم کل کد



using System.Data.SqlClient;
namespace ViewPic
{
public partial class Form1 : Form
{

SqlConnection cnn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand();
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

cnn.Open();
SqlDataAdapter da = new SqlDataAdapter("select id,name,family from list", cnn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
DataGridViewImageColumn img=new DataGridViewImageColumn();
dataGridView1.Columns.Add(img);

backgroundWorker1.RunWorkerAsync();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
cmd.Connection = cnn;

for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
cmd.CommandText = "select picpath from list where id = " + long.Parse(dataGridView1.Rows[a].Cells[0].Value.ToString());

string path =(string) cmd.ExecuteScalar();
dataGridView1.Rows[a].Cells[3].Value = Image.FromFile(path);

}
}

}
}


موفق باشی
بایت بایت

ICANICAN
شنبه 10 تیر 1391, 07:49 صبح
8896788967با سلام و تشکر از همه دوستان
من با راهنمایی های شما مخصوصا جناب youunessو کمی تغییر (چون من با linq)کار کرده بودم این مشکل رو حل کردم عکس هاشو گذاشتم ببینید . البته اول در دیتا گیریدم یه فیلد datagrideimageقرار دادم .