PDA

View Full Version : در مورد GridView و FileUpload



snisni63
شنبه 06 مرداد 1386, 15:43 عصر
باسلام
فرضها:
کاربران یک سایت یک تصویر هم از خود برای شناسایی در سایت دارند. این عکس ها توسط خودشان و admin قابل upload است. اون قسمت که هر کاربر بتونه فایل جدید عکسشو ( با هر پسوندی) upload کنه رو نوشتم و تصاویر با نام UserId کاربر ذخیره خواهند شد.
در مورد اینکه admin بتواند مشابه این کار را انجام دهد یک gridveiw در نظر گرفتم که علاوه بر کنترلهای دیگر در هر ردیف یک کنترل fileupload قرار داده ام ( با استفاده از templatefield). و یک button در صفحه وجود دارد که میخوام وقتی فشرده شد فایل(ها)یی که در fileupload هر user قرار دارد با نام UserId خودشان در یک میسر به خصوص ذخیره شوند.
ممنون
ببخشید اگر طولانی بود!

nazaninam
شنبه 06 مرداد 1386, 16:26 عصر
خوب ببین باید Gridview را داخل یک حلقه foreach بخونی و داخل هر سطر توسط متد FindControl کنترل FileUpload را پیدا کن و عمل آپلود را انجام بده

snisni63
شنبه 06 مرداد 1386, 23:10 عصر
با تشکر دوست عزیز من کد زیر رو نوشتم. خیلی هم باهاش ور رفتم ولی نتیجه نگرفتم
اگه میشه لطف کنید بگید آیا روشم درسته و اگه آره مشکل از کجاست
ProtectedSub btnUpdatePhoto_Click(ByVal sender AsObject, ByVal e As System.EventArgs)
Dim row As GridViewRow


ForEach row In grdUserNames.Rows


Dim upPhoto As FileUpload
Dim mystring AsString

mystring = grdUserNames.Rows(row.DataItemIndex).Cells.Item(1) .Text.ToString()

upPhoto = CType(grdUserNames.FindControl("upUserPhoto"), FileUpload)
'
If upPhoto.FileName <> NothingThen
' Save contents to file system
Dim savePath AsString = MapPath("~/users/images/" + mystring)
upPhoto.SaveAs(savePath)
Call Page_PreRender()

EndIf
Next
EndSub

با تشکر

nazaninam
شنبه 06 مرداد 1386, 23:20 عصر
مشکل کارت اینجاست :





mystring = grdUserNames.Rows(row.DataItemIndex).Cells.Item(1) .Text.ToString()

upPhoto = CType(grdUserNames.FindControl("upUserPhoto"), FileUpload)



دوست خوبم پس این row که تعریف کردی به چه درد خورد؟
به این صورت بنویس :





mystring = row.Cells(0).Item(1).Text.ToString()

upPhoto = CType(row.cells(0).FindControl("upUserPhoto"), FileUpload)



حالا ممکنه تو کنترل آپلود را داخل یک cell دیگه گذاشتی که خودت استادش کن
موفق باشی

snisni63
یک شنبه 07 مرداد 1386, 01:17 صبح
ممنون
درست کار کرد
اما یه چیز دیگه
من میخوام تصاویر با UserId هر شخص ذخیره بشه. (ازmembership استفاده کردم) و توی DataGrid هم نمیخوام UserId ها نمایش داده بشه. برای همین منظور یه GridView دیگه درست کردم و خصیصه visible=false قرار دادم...


srcUserPhoto.SelectParameters.Item("UserName").DefaultValue = mystring
PhotoId = grdUserPhoto.Rows(0).Cells.Item(0).Text.ToString()

ولی کار نمیکنه برای چک کردن مسیر برنامه از یک msgbox استفاده کردم. فقط UserId کاربر اول رو درست نشون میده و بقیه کاربرا هم همون UserId کاربر اول رو نمایش میده
چه باید کرد!؟

nazaninam
یک شنبه 07 مرداد 1386, 10:20 صبح
لازم نیست این کار رو انجام بدی چون واقعا از نظر برنامه نویسی غلطه...
می تونی از DataKey های Gridview استفاده کنی تا UserID ها دیده نشه

niloofar_f
شنبه 13 مرداد 1386, 12:39 عصر
با سلام و تشکر..

کاربران یک سایت یک تصویر هم از خود برای شناسایی در سایت دارند. این عکس ها توسط خودشان و admin قابل upload است. اون قسمت که هر کاربر بتونه فایل جدید عکسشو ( با هر پسوندی) upload کنه رو نوشتم و تصاویر با نام UserId کاربر ذخیره خواهند شد.
در مورد اینکه admin بتواند مشابه این کار را انجام دهد یک gridveiw در نظر گرفتم که علاوه بر کنترلهای دیگر در هر ردیف یک کنترل fileupload قرار داده ام ( با استفاده از templatefield). و یک button در صفحه وجود دارد که میخوام وقتی فشرده شد فایل(ها)یی که در fileupload هر user قرار دارد با نام UserId خودشان در یک میسر به خصوص ذخیره شوند.

منم همچین مشکلی داشتم ولی مشکل من اینه که تو صفحه Button ندارم و می خوام
Admin با زدن کلید Edit (Updat) عکس رو Update یا Insert کنه. حالا باید foreach رو کجا بذارم؟؟ :افسرده:
ممنون

niloofar_f
سه شنبه 16 مرداد 1386, 22:26 عصر
چرا کسی کمک نمیکنه؟؟! من واقعا نمی دونم چطوری باید به FileUpload دسترسی پیدا کنمواز چه ایونتی استفاده کنم...
خیلی ممنون میشم

Nightbat
چهارشنبه 17 مرداد 1386, 17:56 عصر
با سلام و تشکر..
منم همچین مشکلی داشتم ولی مشکل من اینه که تو صفحه Button ندارم و می خوام
Admin با زدن کلید Edit (Updat) عکس رو Update یا Insert کنه. حالا باید foreach رو کجا بذارم؟؟ :افسرده:
ممنون
اگه یه fileuploader داری دیگه foreach‌ نمی خواد، با کد زیر هم می تونی به فایلی که فرستادی دسترسی داشته باشی:

FileUploader.PostedFile.FileName