PDA

View Full Version : Visible,invisible کردن کنترلی در Datalist



h.alizadeh
شنبه 30 شهریور 1387, 15:39 عصر
سلام،

من یک Datalist دارم که در اون چندتا کنترل گذاشتم مثلا کنترل image,,hyperlink کنترل image رو هر کسی میتونه ببینه ولی هایپرلینک رو افراد خاصی می بینند(مدیر فقط می بینه) .

چطوری می تونم هایپرلینک داخل Datalist رو visble,invisible كنم؟؟؟

mp2009
شنبه 30 شهریور 1387, 16:16 عصر
از متد RowDatabound کمک بگیر . اگه صبر کنی یه مثال خوب هم برات میزنم

mp2009
شنبه 30 شهریور 1387, 16:28 عصر
اینو ببین ببینم میتونی متوجه بشی؟
البته از GridView استفاده شده . برای datalist هم صدق میکنه.



protected void grdUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{

foreach (GridViewRow gr in grdUsers.Rows)
{
Label UserName = (Label)gr.Controls[0].FindControl("lblUserName");

Label Name_Family = (Label)gr.Controls[0].FindControl("lblName");

Image UserStatus = (Image)gr.Controls[0].FindControl("Image1");

Label UserRole = (Label)gr.Controls[0].FindControl("Role");

ProfileCommon PC = Profile.GetProfile(UserName.Text);

MembershipUser MEMU = Membership.GetUser(UserName.Text);

Name_Family.Text = PC.Name + " " + PC.Family; ;

}
//-------Set Img Status ---------------

if (MEMU.IsOnline)
{
UserStatus.ImageUrl = "../Images/online.gif";
UserStatus.ToolTip = "آنلاين";
}

}
}

salehbagheri
شنبه 30 شهریور 1387, 18:23 عصر
بهترین راه اینکه در هنگام بوجود آمدن هر سطر (RowCreated) از این کد استفاده کنی!



HyperLink.Visible = Me.User.IsInRole("Administrators")

h.alizadeh
شنبه 30 شهریور 1387, 23:43 عصر
بهترین راه اینکه در هنگام بوجود آمدن هر سطر (RowCreated) از این کد استفاده کنی!



HyperLink.Visible = Me.User.IsInRole("Administrators")



ممنون این رومن درست نفهمیدم کجا بنویسم منظورتون
dtalist1_itemcreate هست؟؟؟

خب اونجا چطوری بگم فیلد هایپرلینک رو نمایش نده این دستور hyperlonk.visbile که کار نمیکنه!

ببینید من در هر رکوردم دوتا هایپرلینکدارم که جداگانه از هم هستند یعنی ممکنهیکی ویزیبل باشه اون یکی نباشه..

h.alizadeh
شنبه 30 شهریور 1387, 23:49 عصر
من اینطوری :


DataList1.Controls(0).FindControl("hypdel").Visible = False

نوشتم ولی فقط روی اولین رکورد تأثیر داره من میخوام کل رکوردا فیلد هایپرلینکشون مخفی و شو بشه...

h.alizadeh
یک شنبه 31 شهریور 1387, 21:26 عصر
بچه ها من در پیج لود اینطوری نوشتم :

Dim hyp As HyperLink = CType(DataList1.FindControl("hypdel"), HyperLink)
hyp.Visible = False

این اررور رو میده:
Object reference not set to an instance of an object.


کسی نیست ما رو کمک کنه؟http://qsmile.com/qsimages/42.gif

salehbagheri
دوشنبه 01 مهر 1387, 12:20 عصر
برای رفع این مشکل از کلمه کلیدی New استفاده کنید! این کد کاملتره! (برای اون چیزی که شما میخواهید)


Dim Hyp As New HyperLink = CType(DataList1.FindControl("HypDel"), HyperLink).Visible = Me.User.IsInRole("Admins")

h.alizadeh
سه شنبه 02 مهر 1387, 04:20 صبح
برای رفع این مشکل از کلمه کلیدی New استفاده کنید! این کد کاملتره! (برای اون چیزی که شما میخواهید)


Dim Hyp As New HyperLink = CType(DataList1.FindControl("HypDel"), HyperLink).Visible = Me.User.IsInRole("Admins")

ممنن
من تو ی پیج لود اینطوری نوشتم :


Dim hyp As new HyperLink = CType(DataList1.FindControl("hypdel"), HyperLink)
hyp.Visible = False


بازم همین خطا روگرفت
Object reference not set to an instance of an object.
:ناراحت:

Saber_Fatholahi
سه شنبه 02 مهر 1387, 12:31 عصر
ممنن
من تو ی پیج لود اینطوری نوشتم :


Dim hyp As new HyperLink = CType(DataList1.FindControl("hypdel"), HyperLink)
hyp.Visible = False


بازم همین خطا روگرفت
Object reference not set to an instance of an object.
:ناراحت:

ببین عزیزمن نیازی نیست که توی Page_Load چک کنی
شما می تونی توی
DataList_ItemDataBound کدزیر بنویسی


Label Label_Username = (Label)e.Item.FindControl("Label_Username");
HyperLink HyperLink1 = (HyperLink1)e.Item.FindControl("HyperLink1");
if (Roles.IsUserInRole(Label_Username.Text, "Admin"))
{
HyperLink1.Visible = true;
}
else
HyperLink1.Visible = false;


که البته شمابجای Role "Admin" میتونین هرچیزی بنویسین

h.alizadeh
سه شنبه 02 مهر 1387, 20:45 عصر
ممنونم آقای صابر فتح اللهی
ولی بازم همون خطا رو داد! من مال شما رو با new هم نوشتم بازم همون خطا رو داد!

اینم از کدم:


Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
Dim hypdel As New HyperLink
hypdel = CType(e.Item.FindControl("hypdel2"), HyperLink)

hypdel.Visible = False
End Sub



--------
اما خب مشکلم رفع شدhttp://qsmile.com/qsimages/36.gif

اینطوری نوشتم:


<asp:HyperLink ID="hypedit" runat ="server" visible ='<%# SetVisible() %>' Text ="Edit" NavigateUrl ="~/editGallery.aspx" />



SetVisible هم یک فانکشن هست که در اون قسمت ویزیبل و اینویزیبل بودن رو تعیین میکنم .
http://qsmile.com/qsimages/36.gif

از همتون ممنون

h.alizadeh
سه شنبه 02 مهر 1387, 20:47 عصر
یک مشکل دیگه دارم گفتم همینجا بپرسم :


من هایپرلینکم اینطوری ه:



<asp:HyperLinkID="hypedit"runat="server"visible='<%# SetVisible() %>'Text="Edit"NavigateUrl="~/editGallery.aspx?a=<%# DataBinder.Eval(Container.DataItem, "imgid") %>&b=111wa"/>



به قسمت NavigateUrl م توجه کنید...

من میخوام وقتی به صفحه ویرایش لینک میشه در متغیر کوئری استرینگ a هم مقدار فیلدimgid م از بانک هم ارسال بشه...

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

اما الان که اونطوری نوشتم این خطا رو میده:

The server tag is not well formed.

خطا از قسمت NavigateUrl هست....

چطوری اصلاحش کنم؟؟؟؟
http://qsmile.com/qsimages/42.gif http://qsmile.com/qsimages/162.gif

salehbagheri
سه شنبه 02 مهر 1387, 21:27 عصر
همه لینک رو داخل دو علامت <% %> بنویسید:


NavigateUrl='<%# "~/EditGallery.aspx?a=" + DataBinder.Eval(Container.DataItem, "ImageID").ToString + "&b=111wa" %>'

h.alizadeh
چهارشنبه 03 مهر 1387, 04:54 صبح
ممنونم حل شد http://qsmile.com/qsimages/40.gif

h.alizadeh
چهارشنبه 03 مهر 1387, 22:49 عصر
بچه ها شرمنده این روشی که من استفاده کردم بااینکه خوبه ولی یک بدی داره …

اینه که من میخوام ترجیحا این چک کردن و ویزیبل این ویزیبل رو در همون کدای فایلaspx.vb بنویسم یعنی مثه اینی که آقا صابر گفتند ولی گفتم خطا میده ...
کسی میتونه کمکم کنه این خطا رو چطور رفع کنم؟؟