PDA

View Full Version : سوال: نمایش تصویر در دیتاگراید با استفاده از آدرس آن تصویر



JaVa
شنبه 14 مرداد 1391, 00:40 صبح
با سلام و خسته نباشید...

دوستان من با استفاده از این کدها تونستم به ستونی از دیتاگرایدم که حاوی آدرس فایلهای تصویری هستند دسترسی پیدا کنم فقط نمیدونم چطور باید تصویر رو در دیتا گراید نمایش بدم::خجالت:


Try
'پیمایش ستون های دیتا گراید
For i = 0 To DGV.RowCount - 1
'بدست آوردن آدرس فایل
strdir = DGV.Rows(i).Cells(10).Value
'تشخیص وجود داستن آدرس
If IO.File.Exists(strdir) Then
''''''
'''''نمایش تصویر در دیتاگراید
'''''
Else
'تصویری در دیتابیس ذخیره نشده
DGV.Rows(i).Cells(10).Value = "no pic"
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try


با تشکر.*

mlf_mlv
شنبه 14 مرداد 1391, 02:06 صبح
Column ها در دیتا گرید به صورت پیش فرض textbox هستن. شما باید نوع Column رو به image تغییر بدید. مطمئنا بدون تغییر نوع Column امکان پذیر نیست

JaVa
شنبه 14 مرداد 1391, 09:51 صبح
Column ها در دیتا گرید به صورت پیش فرض textbox هستن. شما باید نوع Column رو به image تغییر بدید. مطمئنا بدون تغییر نوع Column امکان پذیر نیست

لطفا بیشتر توضیح بدید

h_assefi
شنبه 14 مرداد 1391, 10:13 صبح
دوست عزیز این هم یک نمونه کد برای آشنایی با طرز اضافه کردن یک Column که بتونی عکس توش نشون بدی

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.ColumnCount = 3
DataGridView1.Columns(0).Name = "Product ID"
DataGridView1.Columns(1).Name = "Product Name"
DataGridView1.Columns(2).Name = "Product_Price"

Dim row As String() = New String() {"1", "Product 1", "1000"}
DataGridView1.Rows.Add(row)
row = New String() {"2", "Product 2", "2000"}
DataGridView1.Rows.Add(row)
row = New String() {"3", "Product 3", "3000"}
DataGridView1.Rows.Add(row)
row = New String() {"4", "Product 4", "4000"}
DataGridView1.Rows.Add(row)

Dim img As New DataGridViewImageColumn()
Dim inImg As Image = Image.FromFile("Image Path")
img.Image = inImg
DataGridView1.Columns.Add(img)
img.HeaderText = "Image"
img.Name = "img"

End Sub




نظر یادتون نره، مرسی

JaVa
شنبه 14 مرداد 1391, 17:25 عصر
نظر یادتون نره، مرسی

این کد شما یه مشکل کوچیکی داره.
من هم هر چی باش کار کردم نتونستم حلش کنم
همه ی تصویرها فقط همون تصویر اول رو نشون میده
در ظمن این احتمال وجود داره که عکس وجو نداشته باشه به جاش می خوام یه آواتار نشون بدم چطور؟؟




Dim img As New DataGridViewImageColumn()
Dim inImg As Image

i = DGV.RowCount - 1
Try
'پیمایش ستون های دیتا گراید
For i = 0 To i
'تغییر ارتفاع سطرها
DGV.Rows(i).Height = 70
'بدست آوردن آدرس فایل
strdir = DGV.Rows(i).Cells(10).Value
'تشخیص وجود داستن آدرس
If IO.File.Exists(strdir) Then


inImg = Image.FromFile(strdir)
img.Image = inImg
DGV.Columns.Add(img)
img.HeaderText = "Image"
img.Name = "img"
Else
''''
''''در صورتی که آدرس تصوریری اشتباه باشد
'''''
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try

For Each C As DataGridViewColumn In DGV.Columns
If TypeOf C Is DataGridViewImageColumn Then
DirectCast(C, DataGridViewImageColumn).ImageLayout = DataGridViewImageCellLayout.Zoom
End If
Next



نتیجه :



90720

mlf_mlv
شنبه 14 مرداد 1391, 19:31 عصر
با این کد های فقط یک ستون اضافه می شه با اون عکس خاصی که گفتید. به نظرم باید تعیین بشه این عکس مربوط به کدوم row است تا عکس ها تکراری نباشه...

JaVa
شنبه 14 مرداد 1391, 22:21 عصر
با این کد های فقط یک ستون اضافه می شه با اون عکس خاصی که گفتید. به نظرم باید تعیین بشه این عکس مربوط به کدوم row است تا عکس ها تکراری نباشه...

مشکلش دقیقا همینه!!!

من هر چی سعی کردم که تصویر مورد نظر رو در سطر مربوطه نمایش بده نمیشه:گریه:

mlf_mlv
یک شنبه 15 مرداد 1391, 15:44 عصر
خودتون دستی یه column بسازید بعد با

DGV.Rows(i).Cells(10)
به اون cell مربوطه دسترسی پیدا می کنید

JaVa
یک شنبه 15 مرداد 1391, 16:34 عصر
Dim img As New DataGridViewImageColumn()
Dim inImg As Image
inImg = Image.FromFile(strdir)
img.Image = inImg
DGV.Columns.Add(img)
img.HeaderText = "Image"
img.Name = "img"

مگه با این دستورات یه ستون از نوع image براش درست نکردیم که تصویر رو داخش قرار بدیم بازم بیام columns جدید درست کنیم :گریه:
یا من منظور شما رو بدرستی متوجه نشدم.

mlf_mlv
دوشنبه 16 مرداد 1391, 01:08 صبح
این کد هم یه column اضافه می کنه فرقی نداره.. فقط به جای inImg= img.image باید بنویسی inImg = DGV.Rows(i).Cells(10).image

JaVa
دوشنبه 16 مرداد 1391, 12:20 عصر
دوست عزیز این هم یک نمونه کد برای آشنایی با طرز اضافه کردن یک Column که بتونی عکس توش نشون بدی

جناب اسفی میشه خودتون یه بار این کدها رو امتحان بکنید.
برای من که فقط یه تصویر رو نشون میده:گریه:

h_assefi
دوشنبه 16 مرداد 1391, 14:39 عصر
دوست عزیز mrg_vb
کاری که از من خواسته بودید را انجام دادم ولی من فکر می کردم شما دیگه خودتون ادامه کار را انجام می دید.
طرز کار به این شکل هستش که ابتدا یک ستون با خاصیت عکس پذیری می سازیم و سپس دونه دونه برای هر کدومشون عکس را لود می کنیم.
این مدلی که من نوشتم نیمه پویاست اگه خواستید خودتون کاملا پویاش کنید. همون نمونه کد با کمی تغییر:

DataGridView1.ColumnCount = 3
DataGridView1.Columns(0).Name = "Product ID"
DataGridView1.Columns(1).Name = "Product Name"
DataGridView1.Columns(2).Name = "Product_Price"

Dim img As New DataGridViewImageColumn()
img.Image = Image.FromFile("pic1.jpg")

Dim row As String() = New String() {"1", "Product 1", "1000"}
DataGridView1.Rows.Add(row)
DataGridView1.Columns.Add(img)
DataGridView1.Item(3, 0).Value = img.Image
row = New String() {"2", "Product 2", "2000"}
DataGridView1.Rows.Add(row)
img.Image = Image.FromFile("pic2.jpg")
DataGridView1.Item(3, 1).Value = img.Image
row = New String() {"3", "Product 3", "3000"}
DataGridView1.Rows.Add(row)
img.Image = Image.FromFile("pic3.jpg")
DataGridView1.Item(3, 2).Value = img.Image
row = New String() {"4", "Product 4", "4000"}
DataGridView1.Rows.Add(row)
img.Image = Image.FromFile("pic4.jpg")
DataGridView1.Item(3, 3).Value = img.Image

اگه سئوالی داشتید در خدمتم
نظر یادتون نره، مرسی