# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > Silverlight > آموزش: اموزش سیلور لایت و خاندن اطلاعات از بانک اطلاعاتی با استفاده از WCF RIA

## sunn789

سلام
راستش یه کم نامید شدم دیدم به جای اینکه این تاپیک مشتری بیشترب پیدا کنه داره کم بیننده تر میشه ، گفتیم دست به کار شیم یه اموزش در حد سواد ناقصمون اینجا گذاشته باشیم 
اول اینکه اگه بد توضیح در جایی دادم شرمند و خواهشاً اگه سوالی بود که من بتونم کمک کنم توی یک تاپیک جداگانه بگذارید تا جواب بدیم 

مرحله اول روشی که خود من خیلی از کار با اون لذت میبرم خواندن اطلاعات با استفاده از RIA  است پس تو مرحله اول این فایل که به زبان انگلیسی است رو براتون میگذارم لطفاً سعی کنید همینجوری مطالعه کنید اگه جایی بتونم کمک کنم خوشحال خواهم شد و اینکه سعی خواهم  کرد همین مطالب رو به فارسی ترجمه کنم و نو همین تاپیک بگذارم 
امیدوارم بتونم انجامش بدم
دانلود فایل حجم فایل 6654 KB

----------


## sunn789

در مرحله اول از شما خواسته شده که نرم افزار های زیر را با استفاده از کنترل پنل ویندوز حذف نماید (اگه قبلاً روی سیستم تون نصب کردین)



> a.	Microsoft Silverlight (any version prior to Silverlight 3 RTW)
> b.	Microsoft Silverlight SDK 
> c.	Microsoft Silverlight Tools for Visual Studio 2008


سپس ویژال استادیو 2010 رو بر روی کامپیوتر نصب نمایید و  



> a.	Silverlight 4 RC
> b.	Silverlight 4 RC SDK


را از سایت silverlight.net  دانلود و نصب نمایید
ویژال استادیو را اجرا کنید 
از منوی فایل new  و سپس  Project  را انتخاب نمایید 
در پنجره ای که باز میشود بسته به زبانی که تمایل به برنامه نویسی با آن را دارید میتوانید Visual Basic  و یا #C  را انتخاب نمایید 
از زیر مجموعه Silverlight گزینه Silverlight Business Application را انتخاب و نام پروژه خود را بنویسید و ok را بزنیدUntitled-1.jpg
اگر دقت نمایید یک زوج در پروژه شما ایجاد گردیده است یک فایل که جهت طراحی است و به Silverlight client project مشهور است و یک فایل asp.net  با پسوند ProjectName.web 
- به صورت پیش فرض قدرت ناوبری (navigation) ورورد کاربر , خروج کاربر (login/logout) ثبت نام کاربر جدید و ورود کاربر در پروژه شما وجود دارد 
میتوانید پروژه را یک بار با فشار دادن کلید F5 اجرا نمایید.
نکته که متذکر شده : برای ثبت کاربر جدید لازم است که نرم افزار SQL EXPRESS  بر روی سیستم شما نصب شده باشد.
Untitled-2.jpg

----------


## sunn789

حالا اگه توی قسمت کدهای xaml در صفحه mainPage.xaml  نگاه کنید ممکنه یه نما از کدها دستتون بیاد 

اگه برنامه رو اجرا کرده باشید میبینید که در بالای برنامه میبینید نوشته شده Application Name که این نام رو TextBlock  بااستفاده از کد زیر نمایش میدهد
<TextBlock x:Name="ApplicationNameTextBlock" 
  Style="{StaticResource ApplicationNameStyle}" 
  Text="{Binding ApplicationStrings.ApplicationName, Source={StaticResource ResourceWrapper}}"/>

در قسمت client project و یا همون پروژه Xaml نه asp.net  میتوانید پوشه Assets  رو باز کنید و در داخل پوشه Resources میتوانید ApplicationStrings.resx  رو ببینید و با کلیلک بر روی آن ،آن را باز کنید.
و نام پروژه -که در بالای برنامه اجرا شده نمایش داده میشه -را تغییر دهید
(لطفاً کدها رو ببینید اگه در این مورد سوالی بود که بتونم کمک کنم خوشحال خواهم شد تا در خدمت باشم)
خوب حال چگونه یک صفحه جدید silverlight  به پروژه اضافه کنیم 
روی Clent Project در قسمت Sulotion  راست کلیک کنید و اون وقت از گزینه Add  میتوانید new item  را انتخاب کنید و از زیر مجموعه silverligh ، 
Silverlight Page  رو انتخاب کنید و نامش را به نحوی انتخاب نمایید که متناسب با اطلاعات خودتان باشد ""
Untitled-3.jpg

----------


## sh.shad

مشتاقانه منتظر ادامه آموزش شما هستم.

----------


## mehran_sh_t

سلام
مرسی
این RIA چیه؟

----------


## sunn789

خوب سلام دوباره،
حالا که تونستید یک صفحه به پروژه سیلور لایت اضافه کنید و یک اسم برای اون صفحه انتخاب نمایید(طبق توسیه فایل ماکروسافت EmployeeList.xaml ) و کد زیر رو بین تگ های  grid  قرار دهید
<!-- XAML -->

<ScrollViewer BorderThickness="0"  VerticalScrollBarVisibility="Auto" Padding="12,0,12,0" Margin="-12">
    <StackPanel Margin="0,12,0,12" Orientation="Vertical" >
      <TextBlock Text="Employee List" Style="{StaticResource HeaderTextStyle}"/>

    </StackPanel>
</ScrollViewer>

این تگها کمک میکنه که اگر مطالب صفحه زیاد شد صفحه سکرول بخوره اگر این کد اضافه نشه در صورتی که اطلاعات زیاد باشند به زیر صفحه میرن
در مورد ایجاد صفحات بهتره که صفحات رو در پوشه view  ایجاد کنید و یا در خارج پوشه view ایجاد کنید و به داخل پوشه View  بکشید و رها کنید

اگر از ویژوال بیسیک برای برنامه نویسی استفاده میکنید کد زیر رو در قسمت کد صفحه استفاده نمایید
Imports System.Windows.Controls
حالا نوبت به این میرسه که کد لینک اتصال رو در لینکهای main page   اضافه کنید کد زیر رو در صفحه main page  در بین دو تا از لینکهایی که کدشون شبیه به همین کد هست قرار دهید.
<!-- XAML -->

<HyperlinkButton x:Name="Link3" Style="{StaticResource LinkStyle}" NavigateUri="/EmployeeList" TargetName="ContentFrame" Content="Employee List"/> 

<Rectangle x:Name="Divider2" Style="{StaticResource DividerStyle}"/>


توضیح کد: این لینک style  خودش رو از پوشه Assets استفاده خواهد کرد و Rectangle یه خط کوچک به عنوان جدا کننده ایجاد خواهد کرد که تمامی مشخصات در همان پوشه assets  وجود دارد(این اطلاعات فقط جهت اطلاع بود)
حلال اگر برنامه رو اجرا کنید میتونید شکل زیر رو ببینید
Untitled-1.jpg

----------


## ali_kolahdoozan

حالا فرض کنید رکوردها بره روی 10 هزار تا . میترکه . آنجا چه باید کرد  ؟


خودم paging رو سرم میشه ها . منظورم load یک حجم بزرگ از داده است .

----------


## in_chand_nafar

ساده ترين راه براي راه اندازي paging در سيلورلايت (منظورم Paging واقعي است كه عملا مثلا 10 تا ركورد را به ازاي هر صفحه از بانك اطلاعاتي انتخاب كنه)
استفاده از DomainDataSource مي باشد در قسمت toolbox مي توانيد ابزار اون را مشاهده كنيد اون رو روي User Controlتون بياندازيد
حالا ادامه كار رو از اين لينك پيگري كنيد 
http://msmvps.com/blogs/theproblemso...atasource.aspx
http://www.aspfree.com/c/a/Silverlig...ainDataSource/

در ضمن يادتون باشه كه در ريا سرويس هم متدي كه ديتاي شما رو بر مي گردوند بايد بر اساس يكي از فيلدها مرتب شده باشد
اگر به مشكلي بر خوردي بگو تا راهنمايي كنيم

----------


## ali_kolahdoozan

سلام


با paging رو بلدم . راهی میخام که حجم بالا رو بدون paging بتونم load کنم

----------


## in_chand_nafar

دوست عزيز معمولا هيچ كس حجم عظيمي از داده اون هم در يه برنامه تحت وب از سمت سرور به كلاينت لود نمي كنه سيلورلايت داده ها را سمت سرويس به شكل Asynchronous لود مي كند (مكانيزم داخلي WCF RIA Services است) ولي در هر حالت اين كار منطقي نيست 
حتي حرفه اي ترين ابزارهاي نمايش داده هنگام نمايش تعداد زيادي ركورد از تكنيك صفحه بندي استفاده مي كنند اين سناريوي كه در زير مي نويسم رو برو خوب برسي كن 
ابزار Devexpress رو آشنا هستي مجموعه سيلورلايت اون (نسخه 2011.2.7 ساپورت RTL داره ) گريدش با Domain Data Source مچ شده توي يه مثالش حجم بالايي از ركوردها (بالاي 70 هزار ركورد) رو داره لود مي كنه متنها در UI اثري Paging‌نيست يه تكنيك داخلي به كار بردن كه هر موقع اسكرول ميكني به نسبت اسكرول كمي از داده ها از سمت سرور به كلاينت لود ميشه و كاملا Asynchronous است شما هم بهتر سراغ اين نوع تكنيك ها بريد
در مورد Devexpress به لينك هاي زير مراجعه كنيد (در ضمن نسخه جديد Devexpress بر پايه سيلورلايت 5 مي باشد Performance بالايي نسبت به Telerik داره مثل اون حافظه نمي خوره)
http://www.nikamooz.com/index.php?op...ess&Itemid=119
http://www.devexpress.com/Products/N...ight/Grid_Pro/
حالا اگر حجم عظيم رو براي پردازش (مثلاً گزارش مي خواهيد) مي توانيد از ابزارهاي گزارش گيري سيلورلايتي با ساپورت RTL‌استفاده كنيد جهت اطلاعات بيشتر به اين لينك مراجعه كنيد
http://www.nikamooz.com/index.php?op...ols&Itemid=116
موفق باشيد

----------


## ali_kolahdoozan

من مشکلم اصلا تعداد رکورد نیست . شاید یک جایی تعداد ستون ها زیاد باشه . مسئله من محدودیت سرویس است نه UI و ابزارهاش

----------

