PDA

View Full Version : مخفی کردن یک image در gridview



hamhik
یک شنبه 05 فروردین 1386, 14:23 عصر
با سلام
در سایتی که طراحی می کنم که سایت پرسش و پاسخ هست هر کاربر یک آواتار داره و من با استفاده از این

دستورات

<asp:Image ID="Imgavatar" border=0 Height =74 Width =100
ImageUrl='<% #eval("avatar") %>' runat="server" />
که در قسمت source می نویسم آواتار مربوط به کاربران را نمایش می دهد اما ممکن هست که کاربری آواتار نداشته باشه و من بخوام این طوری برنامه ش رو بنویسم که اگه فیلد آواتار مربوط به کاربری null بودvisible را false کن اگه من بخوام این قسمت رو در قسمت کد نویسی بنویسم باید در چه رویداد از gridview برنامه مربوطه را وارد کنم؟؟

samanes
یک شنبه 05 فروردین 1386, 23:52 عصر
در رویداد RowDataBound باید چک کنی

hamhik
چهارشنبه 08 فروردین 1386, 11:41 صبح
من برای مخفی کردن کنترل image موجود در gridview کاربری که آواتار ندارد از دستورات زیر استفاده کردم



Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
Const strConnString As String = "server=SHAHAB-74E4CD09;database=bn;uid=sa;pwd=1"
Dim objConn As New SqlConnection(strConnString)
Dim strque As String = "select path from table3"
Dim objcmd1 As New SqlCommand(strque, objConn)
objConn.Open()
Dim a As Object
a = objcmd1.ExecuteScalar()
If Not ((Convert.IsDBNull(a))) Then
GridView1.TemplateControl.FindControl("imgavatar").Visible = True
Else
GridVGridView1.TemplateControl.FindControl("imgavatar").Visible = False
End If


این هم بگم که از طریق itemtamplate ایمیج را در gridview ساختم اما دستورات بالا جواب نمی دن و تازه به خط GridView1.FindControl("Imgavatar").Visible = True
ارور گرفته می شود که ارور مربوطه این است
object refrence not set to an instance of an object

مشکل کجاست؟؟؟

nazaninam
پنج شنبه 09 فروردین 1386, 11:14 صبح
کار های راحت تری هم هست
شما میتونید برای فیلد مربوط به عکس داخل دیتابیس یک defaulyvalue بگذارید مثلا nopic.gif حالا هر کسی آواتار آپلود نکرد عکسش میشه nopic.gif ، و کافیه شما داخل هاستتون یک عکس پیش فرض به نام nopic.gif بگذارید
راه راحت تر دیگه اینکه یک تابع از نوع public داخل کد هاتون تعریف کنید که عمل چک کردن عکس و خالی بودن و تغیر اسم رو بر عهده داره و هنگام بایند کردن از اون استفاده کنید
اینجوری :
ImageUrl='<% # CheckImage(eval("avatar")) %>' runat="server" />
تابه CheckImage رو داخل کد بیهاند بسازید

__H2__
پنج شنبه 09 فروردین 1386, 12:50 عصر
سلام
روش کاربر nazaninam (http://www.barnamenevis.org/forum/member.php?u=13502) بسیار کامل است و بهترین حالت است ولی برای کارهای ساده تر میتوانید از تابع IIF نیز کمک بگیرید و در صورت خالی بودن یک تصویر دیگر را نشان دهید یا کل تگ IMG را در داخل IIF قرار دهید و در صورت خالی بودن اصلاَ تگ IMG اضافه نشود.