PDA

View Full Version : سوال: چطور میشه شرطی رو روی سطرهای دیتالیست اعمال کرد



baran_mehr
جمعه 05 مهر 1387, 16:03 عصر
سلام دوستان عزیز:قلب:
چطور میتونم روی مقادیر موجود در DataList شرط هایی رو اعمال کنم؟
برای مثال در همین سایت برنامه نویس خیلی از اوقات این کار انجام میشه مثلا: داخل هر پست یک عکس هست که میگه کاربر در حال حاضر در سایت هست یا نه
که این کار رو وقتی اطلاعات رو از جدول میخونه برسی میکنه یعنی تو دیتالیست برسی میکنه که ایا این سطر از دیتا لیست کاربر روشن باشه یا خاموش
این کار رو چطور روی دیتالیست اعمال میکنن؟؟:متفکر:
ممنون.شاد باشید.

m.hamidreza
جمعه 05 مهر 1387, 23:30 عصر
در دیتالیست باید از TemplateField استفاده کنی و هر ردیف رو طبق اون چیزی که میخوای میچینی مثلا یه image برای عکس کاربر، یه lable برای نام کاربر و .... . دیتالسیت رو هم که پر میکنی از db .
بعد از اینکه آنلاین بودن کاربر رو تشخیص دادی با یه foreach همه ی کاربرانی که آنلاین هستن رو یه image خاص براشون لود میکنی. یعنی میگردی در همه سطرهای دیتالیست کنترل image رو پیدا میکنی و اگه مالک اون سطر ON بود image آنلاین بودن رو براش نشون میدی.


<asp:GridView ID="gView1" runat="server" GridLines="None" AllowPaging="true" PageSize="4" AutoGenerateColumns="false" Width="800px" OnPageIndexChanging="gView1_PageIndexChanging" >
<Columns>
<asp:TemplateField>
<ItemTemplate>

<table style="width:800px;margin:0px;" cellpadding=0 cellspacing=0>

<tr>
<td class="title" runat="server"><a name="<%#Eval("ID")%>"></a><%#Eval("Title1")%></td>
</tr>
<tr>
<td class="date" style="width:600px" runat="server"><asp:Label runat="server" ID="lbl_date" Text=<%#Eval("Date")%>></asp:Label></td>
</tr>
<tr><td class="height"></td></tr>

<tr>
<td class="body" runat="server"> <asp:Image CssClass="img" ID="img" runat="server" ImageUrl=<%#Eval("ImagePath")%> />
<%#Eval("Body")%></td>
</tr>
<tr><td class="_file" ><asp:HyperLink ID="lnk_fileDownload" runat="server" NavigateUrl=<%#Eval("filepath")%>></asp:HyperLink></td></tr>
<tr><td><hr style="width:100%" /></td></tr>
</table>

</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

البته این مال گرید هست ولی زیاد فرق نمیکنه تو دیتالیست فکرکنم ItemTemplate و Columns رو نخواد.
سمت سرور هم یه Select ساده داری و انتقال به یه دیتاست و نسبت دادن دیتاست به دیتالیست. کد foreach توی گرید یا دیتاست هم قبلا زیاد گفته شده.

baran_mehr
یک شنبه 07 مهر 1387, 16:24 عصر
ممنون از راهنماییت داداشی.
یعنی اول دیتالیست رو به دیتابیس وصل کنم و بعد تک تک سطر ها رو برسی کنم و تغییرات رو اعمال کنم؟؟
اما چطور باید مثلا Image که تو سطر 2 دیتالیست هست رو تغییر تصویر بدم و یا Lable همون سطر رو متنش رو عوض کنم؟؟

saleh.hi.62
یک شنبه 07 مهر 1387, 17:07 عصر
فکر کنم اینجوری باید عمل کنی

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)

{

DataRowView row;

Image img;

row = (DataRowView)e.Item.DataItem;

img = (Image)e.Item.FindControl("image1");

if (row["online"].ToString().Trim() == "on")

{



img.ImageUrl = "~/on.gif";



}

else

{

img.ImageUrl = "~/off.jpg";

}




}

baran_mehr
یک شنبه 07 مهر 1387, 22:39 عصر
داداش گلم saleh.hi.62 جان واقعا ممنون. این کدت خیلی کمکم کرد.
راستی داداشی وقتی که توی پیامهات کد میخوای بزاری اونها رو Select کن و بعد علامت # رو بزن تا تو قالب کد نمایش داده بشه.مرسی
از همه دوستان هم ممنون.

baran_mehr
یک شنبه 07 مهر 1387, 22:48 عصر
دوستان یه سوال دیگه : حالا اگر بخوایم یک سری تغیرات رو روی یک سطر خاص انجام بدیم باید چه کار کرد.
مثلا تصویر Image سطر خاصی رو عوض کنیم؟؟

baran_mehr
یک شنبه 07 مهر 1387, 23:15 عصر
ممنون tarhebartar جان.
اما اگه نخوام این تغییرات تو دیتابیس ثبت بشه باید چی کار کنم.یعنی فقط ظاهر دیتالیست رو یه تغییری بدم مثلا تغییر تو چند تا سطر (که مقدار یکی از اشیاء سطری رو تغییر بدم)

kezack
یک شنبه 07 مهر 1387, 23:28 عصر
دوست خوب فكر ميكنم كه براي تغيير مقدار ,خوب بايد ديتابيس ابديت بشه
ميشه واضحتر توضيح بدين؟

baran_mehr
دوشنبه 08 مهر 1387, 09:22 صبح
سلام دوستان گلم.
نه منظور تغییری نیست که روی دیتابیس انجام بشه.
فرض کنید اطلاعات رو از دیتا میخونیم و تو دیتالیست نمایش میدیم. حالا میخوام عکس Image موجود تو سطر 2 رو تغییر بدم .

baran_mehr
دوشنبه 08 مهر 1387, 09:33 صبح
tarhebartar جان یه سوال از شما دارم:من رفتم و سایت شما رو دیدم، تو صفحه اول سایتتون یک سری اطلاعات بود که به نظر میامد با دیتالیست نشون دادید. میخواستم بدونم شما چطوری دیتالیست رو صفحه بندی کردید؟؟ منظورم اینکه مثل گرید پایینش تعداد صفحه گذاشتید؟؟
من این سوال رو قبلا تو یه تایپیک دیگه پرسیده بودم دوستان هم چندین راه به من گفتن اما من نتونستم انجامش بدم. مشه لطف کنید و تو این ضمینه هم به من کمک کنید.
ممنون میشم گلم

saleh.hi.62
دوشنبه 08 مهر 1387, 11:45 صبح
سلام
ممنون از اینکه منو در مورد گذاشتن کد راهنمایی کردین خواهر جون گله عزیزم قربونت برم:خجالت:دیدی ما پسرا هم بلیدم ها:لبخندساده:
برای اینکه روی یه سطر خاص عملی رو انجام بدی شرطو اینجوری بنویس

DataList1.Items.Count ==i
مقدار i همون سطری که میخوای تغییر کنه .
در ضمن شماره سترها از 0 شورو میشه.


برای paging هم خودتو درگیر نکن از listveiw ای اس پی 3.5 استفاده کن میبینی که چقد انعطاف داره و خیلی آلی کارتو را میندازه.

baran_mehr
دوشنبه 08 مهر 1387, 12:23 عصر
بابا من نمیدونم رو چه حساب به من میگین خواهر؟؟؟من کی گفتم دخترم
ممنون از راهنماییتون.اما چطور باید مثلا image تو سطر 2 رو تغییر بدم؟؟

saleh.hi.62
دوشنبه 08 مهر 1387, 13:13 عصر
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
DataRowView row;

Image img;

row = (DataRowView)e.Item.DataItem;

img = (Image)e.Item.FindControl("image1");

if (DataList1.Items.Count == 1) //datalist برای سطر 2 مقدار 1 چون از 0 شروع میشه سطر های
{
img.ImageUrl = "~/test.jpg";//تو این قسمتم عکسی که میخوای تو اون سطر بزاری آدرس قرار بده

}

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

baran_mehr
دوشنبه 08 مهر 1387, 18:41 عصر
دستت درد نکنه داداش saleh.hi.62 جان(تو از اون داداشای پر روی منی:بوس::قلب:).مرسی از کمکت اون مشکلم هم حل شد.
tarhebartar جان خیلی برام جالب بود که با گرید ویو هم میشه اینطوری طراحی کرد من فکر کردم دیتا لیسته

saleh.hi.62
دوشنبه 08 مهر 1387, 18:57 عصر
اشتباه میکنی خواهر جان من اونقدرا هم پر رو نیستم.
فقط یه کم خواستم مثل خودت باشم.
خیلی خودمونیو راحت این دلیل بر پررویی نیست که:متعجب::گریه:


راستی چه جوری از پست یه نفر تشکر میکنن؟؟

baran_mehr
سه شنبه 09 مهر 1387, 00:41 صبح
saleh.hi.62 جان من منظوری نداشتم.امیدوارم ناراحت نشده باشی هر جور دوستی داری صدام کن عزیزم.
برای تشکر کردن هم کافیه کلید تشکر رو که زیر همون پست مربوط هست بزنی.به همین سادگی