PDA

View Full Version : edit template در grid view



htmbarnamenevisl
چهارشنبه 06 آذر 1387, 03:50 صبح
سلام
من ميخوام جدولم رو در sql به يك grid view در برنامم وصل كنم
جدولم حاوي متن تصوير هست
تو سايت قسمت فروشگاه موبايل نمونهاي از اين كار رو ديدم
با edit tempelate ظاهر grid view رو عوض كرده بودند
من هم مي خوام اين كارو انجام بدم اما تا حالا با edit template كار نكردم
خواهش مي كنم برام كامل توضيح بديد كه چطور ميشه ظاهر grid view رو عوض
كرد و هريك از مقادير داخل ديتا بيس رو به هر يك از اشيائ درون grid view نسبت داد
من در مبحث فروشگاه انلاين مو بايل هم اين سوال رو مطرح كردم اما چون جوابي نگرفتم اينجا هم اونو مطرح كردم به اين اميد كه يهنفر بالاخره جوابي صريح به من بده من سرچ هم كردم اما مطلبي كه بتونه پاسخ گوي من با شه پيدا نكردم

emad_67
چهارشنبه 06 آذر 1387, 09:44 صبح
توی gridview همچین چیزی رو برای ItemTemplate که برای ساخت یک ستون طبق میل شما هست داریم:


<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
.........
</HeaderTemplate>
<ItemTemplate>
.......
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
هر کدوم از <asp:TemplateField> ها معادل یک ستون میشه که آیتم های درون اون رو باید خودت در داخلش مشخص کنی. مثلا <HeaderTemplate> برای تعیین هدر اون ستون، <ItemTemplate> برای مقادیری که باید درون هر سلول قرار بگیرن و ...
مثلا داخل ItemTemplate من یک label رو به فیلد جدولی بایند کردم:


<ItemTemplate>
<asp:Label ID="lbl" runat="server" Text='<%# Eval('Name') %>' />
</ItemTemplate>

برای تگ های دیگه هم به همین شکل.

htmbarnamenevisl
جمعه 08 آذر 1387, 05:35 صبح
واسه عكس هم بايد همين كارو انجام بدم تا از ديتا بيس خونده بشه

kezack
جمعه 08 آذر 1387, 08:01 صبح
بله کافی یک image در قسمت EditTempelet بزاری سپس فیلدی که توش آدرس عکس رو بهش نسبت میدی رو به اون بایند کنی مثل بالا فکر کنم
نمونه تو سایت هست مثلا گالری عکس...

sara_B
دوشنبه 11 آذر 1387, 18:16 عصر
با سلام و تشکر از همه دوستانی که در این تاپیک شرکت کردن
من توضیحاتو قدم به قدم و با جزییات و سه مثال مختلف نوشتم :
بعد از گذاشتن گرید ویو توی فرمتون ، روی مثلث کوچولوی کنار گرید ویو(Grid View Tasks) کلیک کرده و گزینه ی Edit Coloumns را انتخاب کنید.
سپس ازلیست سمت چپ پنجره ی باز شده(available list) ، Template Field را انتخاب کرده و دکمه ی Add را انتخاب و پس از آن OK کنید.
مجددا از Grid View Tasks گزینه ی Edit Template را انتخاب کنید.
حالا درون Templateی که مشاهده می کنید ، به هر تعداد کنترل که لازم دارید ، مانند Image اضافه کنید .(ترجیحا جهت چیدمان منظم کنترل ها همیشه از Table استفاده نمایید و سپس کنترل های دلخواه را درون سلول های جدولتان بگذارید)
روی مثلث کوچک کنار هر کنترلی که به Template اضافه کردید کلیک کنید و گزینه ی Edit DataBinding را برگزینید.
اکنون قادر به ایجاد تغییرات دلخواه که مایل باشید در کنترل شما صورت گیرد ، می باشید.
اغلب این قابلیت ها توسط تابع(" Eval Field Name”) صورت می پذیرد.
به این معنی که کافیست به جای عبارت Field Name نام فیلد موجود در جدول دیتا بیس که می خواهید نمایش داده شود را قرار دهید، به این ترتیب کنترل شما به دیتا بیس متصل (Bind) می شود و اطلاعات را می خواند.
مثال اول :کنترل Image :
ابتدا در جدول خود یک فیلد از جنس nvarchar ایجاد کنید، و آن را همیشه فقط با نام و پسوند عکس دلخواه خود پر کنید ، مثلا نام عکس یکی از گوشی ها ی موبایل شما nokia-7900-crystal است ، بنابراین nokia-7900-crystal.jpg را در فیلد مربوط به Image ذخیره کنید و به همین ترتیب سایر سطرها را برای سایر گوشی ها.
یک فولدر(در ريشه ي وب سايت) به نام Images بسازید (در صورت نیاز عکس های مربوط به گوشی ها را درون یک SubFolder قرار دهید) عکس هایتان را درون آن ذخیره کنید.
یک کنترل Image درون Template قرار دهید.
Edit DataBinding را توسط مثلث کوچک کنار Image انتخاب کنید تا پنجره ی Image1 DataBindings باز شود.
جهت داد ن آدرس دادن به Image گزینه ی ImageUrl را انتخاب کنید
(اگر code Expression (یک تکست باکس در پایین پنجره) فعال نیست رادیو باتن بالای آن را کلیک کنید تا فعال شود)
درون تکست باکس ِ " code Expression " ، کد زیر را بنویسید :



Eval("mobileImage")


(یا به جای images\\ آدرس محلی که عکس را ذخیره کردید بنویسید)


نکته : خاصیت DataSourceID مربوط به گرید ویو را نام فیلد کلید اصلی جداولی قرار دهید که گرید ویو را به آن Bind کرده اید.


مثال دوم برای Lable:
می خواهیم نام مربوط به هر گوشی را درون lable نمایش دهیم.
(فرضا نام فیلد "نام گوشی" در دیتا بیس ، mobileName است)
کارهایی که برای کنترل Image انجام دادید ،برای این کنترل نیز انجام دهید ، سپس جهت نمایش متن مورد نظر درون جداول دیتا بیس ، گزینه ی Text را انتخاب کنید .
درون تکست باکس ِِ " code Expression " ، کد زیر را بنویسید :



Eval("mobileName")


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


مثال سوم : فراخوانی توابع :
فرضا یک تابع در بخش کد C# نوشته ایم به نام miladiToShamsi() که تاریخ را به فرمت میلادی گرفته و به فرمت شمسی تبدیل می نماید.
مثلا نام فیلد تاریخ در جدول دیتا بیس NewsDate و از جنس DateTimeاست.
یک Lable مانند مثال بالا به Template اضافه کنید.
درون تکست باکس ِِ " code Expression " ، کد زیر را بنویسید :

miladiToShamsi(ConvertToDateTime(Eval(“NewsDate )))


نکته :همواره توجه داشته باشید که تابع Eval مقادیری که پاس می دهد از جنس آبجکت است ، بنابراین مانند مثال بالا همیشه مقدار این تابع را به نوع پارامترهای تابع اصلی خودتان تبدیل (Convert) کنید.

sara_B
شنبه 16 آذر 1387, 12:38 عصر
با سلام:لبخندساده:


تابع تبديل تاريخ ميلادي به شمسي (كه در بالا به عنوان مثال سوم به آن اشاره شد) :
كارهايي كه در مثال سوم گفته شد را انجام دهيد و سپس به قسمت كد برويد و در آنجا تابع زير را وارد نماييد:



protected string miladiToShamsi(DateTime dt)
{
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
return string.Format("{0}/{1}/{2}", p.GetDayOfMonth(dt), p.GetMonth(dt), p.GetYear(dt));
}


پس از اجرا مشاهده مي كنيد كه تمامي تاريخ هاي ميلادي شما در lable ي كه درون template ِ گريد ويو قرار داده بوديد ، با فرمت شمسي نمايش داده مي شود.


و جهت نمايش روزهاي هفته :
(همانند مثال 3) يك lable ديگر در template Field قرار داده ، و درون تکست باکس ِِ " code Expression " ، کد زیر را بنویسید :


roozhayeHafte(Convert.ToDateTime(Eval("NewsDate ")))


اكنون تابع زير را استفاده نماييد :
( تابع تبديل روزهاي هفته ي لاتين به روزهاي هفته ي فارسي )
به قسمت كد برويد و در آنجا تابع زير را وارد نماييد:


protected string roozhayeHafte (DateTime dt)
{
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
string rooz;
rooz=string.Format("{0}", p.GetDayOfWeek(dt));
switch (rooz)
{
case "Saturday":
rooz = "شنبه";
break;
case "Sunday":
rooz = "يكشنبه";
break;
case "Monday":
rooz = "دوشنبه";
break;
case "Tuesday":
rooz = "سه شنبه";
break;
case "Wednesday":
rooz = "چهارشنبه";
break;
case "Thursday":
rooz = "پنج شنبه";
break;
case "Friday":
rooz = "جمعه";
break;
}
return rooz;
}


پس از اجرا مشاهده مي كنيد كه تمامي روزهاي هفته ي لاتين در lable ي كه درون template ِ گريد ويو قرار داده بوديد ، به شكل روزهاي هفته ي فارسي نمايش داده مي شود.

sara_B
شنبه 16 آذر 1387, 22:21 عصر
من که نفهمیدم آخر برای سرور رو بر می گردونه یا کلاینت !


مي شه سوالتونو واضح تر بپرسيد؟!

sara_B
چهارشنبه 27 آذر 1387, 01:45 صبح
htmbarnamenevisl ، اين آي دي : sara_ B ، آي دي مشابه آي دي من هست كه توسط يه آدم مريض ساخته شده ، لطفا به پستايي كه مي زنه توجهي نكنيد.

vcldeveloper
چهارشنبه 27 آذر 1387, 03:19 صبح
htmbarnamenevisl ، اين آي دي : sara_ B ، آي دي مشابه آي دي من هست كه توسط يه آدم مريض ساخته شده ، لطفا به پستايي كه مي زنه توجهي نكنيد.
کاربر مربوطه محروم شد.

htmbarnamenevisl
چهارشنبه 27 آذر 1387, 06:50 صبح
ببخشید من متوجه صحبت شما نشدم یعنی چی شبیه آی دی شماست



htmbarnamenevisl ، اين آي دي : sara_ B ، آي دي مشابه آي دي من هست كه توسط يه آدم مريض ساخته شده ، لطفا به پستايي كه مي زنه توجهي نكنيد

htmbarnamenevisl
چهارشنبه 27 آذر 1387, 15:23 عصر
سلام
من یه جدول دارم که کلید اون ID هست و یه فیلد دیگه به اسم name داره
می خوام گرید ویو رو تو برنامم طوری بهش بایند کنم که فقط مقادیری از اون رو که فیلد name اونها برابر sony هست رو برام نمایش بده باید چی کار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

kezack
چهارشنبه 27 آذر 1387, 16:27 عصر
خوب با دستور sql یک query بگیر خوب!


select Id,name from tabl1 where name=@name....

بعدش تعریف کن که این @name چی میخواد باشه