PDA

View Full Version : به دست آوردن مقدار یک فیلد در Repeater (نه چاپ کردن)



Chabok
چهارشنبه 11 مرداد 1385, 11:42 صبح
با سلام
میخواستم بدونم آیا نمیشه مقدار یک فیلد رو که دیتاسورسش به Repeater بایند شده رو به دست آورد
آخه با دستور


<%#Container.DataItem("Pic")%>
فقط میشه مقدار رو چاپ کرد . من میخوام به دست بیارمش و ازش تو کد نویسی استفاده کنم .

مثال : مثلا در یه رکورد یه فیلد مربوط به عکس میشه .
حالا گیریم اون عکس از روی سرور پاک شده .
بنابراین هنگام چاپ میخوام چک کنم که اگه عکس وجود نداشت مثلا یه عکس "بدون عکس" نشون بدم .
ممنونم کمک کنید .

Behrouz_Rad
چهارشنبه 11 مرداد 1385, 13:24 عصر
اینکار رو باید در روال ItemDataBound کنترل Repeater ات انجام بدی....
از دستور ("e.Item.DataItem( "column_name می تونی برای به دست آوردن مقدار فیلد استفاده کنی...

پ.ن: فکر می کنم در مورد نحوه ی ارجا به اشیا و بازیابی و تنظیم خواص اونها در زمان اجرا به اندازه ی کافی در پست های مختلف صحبت کردم...

موفق باشید.

Chabok
چهارشنبه 11 مرداد 1385, 19:13 عصر
خیلی ممنون .

ولی یه جای کارم می لنگه .
ببینید مثلا من در ItemTemplate نوشتم :



<%
dim a as string=returnimg("مسیر عکس")
%>

<img src='<%=a %>' />


ولی من اون تابع پیدا کردن مسیر عکس رو در بخش ItemTemplate قرار میدم .
فقط اون قسمت "مسیر عکس" رو میخوام چک کنم .

آیا برای حل این مشکل باید از کامپوننت های سرور ساید استفاده بشه تا از Codebehind بهشون دسترسی داشت ؟

آخه اینجوری مثلا 10 تا تصویر توی صفحه ایجاد میشه که همشون خاصیت ID شون برابر مثلا "img" است .

میشه اینم یه توضیح بدین . شرمنده . ممنونم

Behrouz_Rad
چهارشنبه 11 مرداد 1385, 19:29 عصر
از کنترل Image سرور ساید استفاده کن...
در روال ItemDataBound، رکورد جاری رو بازیابی می کنی و وجود تصویر مربوط به رکورد رو با دستور System.IO.File.Exists بررسی می کنی...
حال با یک ارجا به کنترل Image، در صورتی که فایل وجود داشت، فایل رو به خاصیت ImageUrl کنترل Image منتسب می کنی، در غیر اینصورت، تصویری رو که برای زمان نبود عکس در نظر گرفتی به این خاصیت نسبت میدی.

موفق باشی.

Csharp2005
چهارشنبه 11 مرداد 1385, 19:31 عصر
شما بگین مقلا چه استفاده ای میخواین بکنین ؟؟

Chabok
چهارشنبه 11 مرداد 1385, 20:19 عصر
پاسخ آقای راد :
خیلی ممنون . مشکلی نیست . فقط اینکه مثلا 10 تا کنترل Image با ID برابر تولید میشود مشکلی ایجاد نمیکند ؟

پاسخ آقای Csharp2005 (http://www.barnamenevis.org/forum/member.php?u=22285) :
یه نمونش همین کاری که اگه تصویر پاک شده بود یه عکس دیگه نشون بدیم .
یا اصلا چیزی نشون ندیم .

از همگی ممنونم

Behrouz_Rad
جمعه 13 مرداد 1385, 21:31 عصر
فقط اینکه مثلا 10 تا کنترل Image با ID برابر تولید میشود مشکلی ایجاد نمیکند ؟
هیچ دو عنصری در فرم های وب دارای ID یکسانی نیستند...
این ID منحصر به فرد رو می تونی با خاصیت ClientID کنترلت به دست بیاری...

موفق باشی.

Csharp2005
جمعه 13 مرداد 1385, 22:32 عصر
پاسخ شما در همان پست دوم داده شده است.

سعی کنید از همان راه بروید ، همشهری عزیزم !!!

Chabok
شنبه 14 مرداد 1385, 10:31 صبح
با عرض پوزش مجدد . راستش من یه کنترل Image بصورت Serverside در ItemTemplate
قرار دادم . ولی در رویداد ItemDataBound مربوط به Repeater به اون عکس دسترسی نداره .


<asp:Image ID="ItmImg" BorderWidth="1" runat="server" />

چه کنم ؟ ممنون .

و سوال بعد اینکه در رویداد ItemDataBound فقط باید بنویسم :



ItmImg.Image = e.Item.DataItem("Pic")


. درسته ؟

Behrouz_Rad
شنبه 14 مرداد 1385, 14:46 عصر
دوست عزیزم!
مشخص هست که در مورد نحوه ی ارجا به اشیا مشکل داری...
تقریبا هفته ای 2 تا 3 بار در این مورد سوال مطرح میشه و بنده پاسخگو هستم...

پ.ن: فکر می کنم در مورد نحوه ی ارجا به اشیا و بازیابی و تنظیم خواص اونها در زمان اجرا به اندازه ی کافی در پست های مختلف صحبت کردم...
به هر حال از تازه ترین پاسخی که در این باب دادم کمک بگیر:
http://www.barnamenevis.org/forum/showthread.php?t=49451

موفق باشی.

Chabok
شنبه 14 مرداد 1385, 17:11 عصر
دوست عزیزم!
مشخص هست که در مورد نحوه ی ارجا به اشیا مشکل داری...


اگه مشکل نداشتم که حال و روزم بهتر از این بود :لبخند:


به هر حال از تازه ترین پاسخی که در این باب دادم کمک بگیر:
http://www.barnamenevis.org/forum/sh...ad.php?t=49451 (http://www.barnamenevis.org/forum/showthread.php?t=49451)


خیلی ممنون . استفاده کردم .
یعنی از این دو خط مخصوصا :


Dim obj_Img As WebControls.Image = CType(e.Item.FindControl("ItmImg"), WebControls.Image)
obj_Img.ImageUrl = "/" & e.Item.DataItem("Pic")


فقط من با یک رکورد امتحان کردم و خداروشکر مشکلی نبود .

ولی میخوام بدونم که روی چند تا رکورد چجوری جواب میده .
آخه وقتی در رکورد قبلی هم چنین کنترلی با همین ID وجود داشته این متد FindControl
یعنی فقط کنترل مربوط به رکورد جاری را بر میگرداند ؟

اگه یه توضیح مختصر بدین ممنون میشم . چون فعلا مشکلم حل شد . خیلی ممنون .

Behrouz_Rad
شنبه 14 مرداد 1385, 18:11 عصر
ولی میخوام بدونم که روی چند تا رکورد چجوری جواب میده .
آخه وقتی در رکورد قبلی هم چنین کنترلی با همین ID وجود داشته این متد FindControl
یعنی فقط کنترل مربوط به رکورد جاری را بر میگرداند ؟

درسته که تنها یک ImageButton با یک ID در ItemTemplate قرار میدی، اما به این کنترل، در زمان اجرا توسط موتور پردازش گر ASP.NET به ازای هر بار ایجاد، یک ID منحصر به فرد تعلق می گیره.
در اکثر مواقع تو به این ID نیازی نداری اما در صورت نیاز می تونی با استفاده از خاصیت ClientID به دستش بیاری...

موفق باشی.

eshaghi
دوشنبه 24 مهر 1385, 15:45 عصر
<td><a href='webform3.aspx?isbn=<%#databinder.eval(container.dataitem,"isbn")%>'>جزئیات
کاملتر</a></td>
sbnنام یک فیلد است که مقدار ان در متغیر isbn به صفحه بعد می رود