سلام به همه
و عرض ارادت و صبح بخیر
از دوستان تشکر میکنم که صبوری کردند.
بر حسب وظیفه امروز ساده ترین حالت نمایش لیست اطلاعات در گرید رو تقدیم خواهیم کرد.
من سعی میکنم به ساده ترین شکل ممکن بنویسم. اگه دوستان احساس میکنم که زیاده دیگه دارم ساده میگم و درازه گویی میشه، بگن تا یه کم جمع و جور تر کد بزنیم.
با فرض بر اینکه پیش نیازها رعایت شده اند(VS 2010 - SQL 2008 و نکات پست قبل):
میخواهیم لیست برنامه نویس هایی رو که دیتا بیس داریم رو نمایش بدیم.
در کل:
اول کلاسهای لازم رو میسازیم، بعد تابع لازم رو، بعد سرویس رو آپدیت میکنیم، بعد متد داخل سرویس رو فراخوانی میکنیم و دست آخر خروجی متد رو به گرید بایند میکنیم
اما گام به گام:
1- تو بخش وب پروژه مون یه کلاس اد کنین (RightClick->Add->Class) و نامگذاری کنین (Entities.cs). تصویر شماره 1
2- کلاس برنامه نویس رو با ویژگیهاش بسازین.
public class Programmer
{
/// <summary>
/// Properties - ویژگیها
/// </summary>
public int ProgrammerID;
public string FirstName;
public string LastName;
/// <summary>
/// Constructor - سازنده
/// </summary>
public Programmer()
{
}
}
3- برین تو وب سرویس(BarnamenevisService.svc)، اون بالا، نیم اسپیس لازم برای تهیه یه لیست از کلاس برنامه نویس که نوشتیم (using System.Collections.Generic;) رو اضافه کنین.
4- یه متد بنویسین برای دریافت تمام برنامه نویسهای موجود تو پایگاه داده ( بدون ورودی و با خروجی لیستوار از کلاس برنامه نویس):
[OperationContract]
public List<Programmer> GetAllProgrammer()
{
List<Programmer> _result = new List<Programmer>();
BarnameNevisDataSetTableAdapters.ProgrammerTableAd apter adapter = new BarnameNevisDataSetTableAdapters.ProgrammerTableAd apter();
BarnameNevisDataSet.ProgrammerDataTable table = adapter.GetAllProgrammer();
foreach (var item in table)
{
Programmer _prog = new Programmer();
_prog.ProgrammerID = item.ProgrammerID;
_prog.FirstName = item.FirstName;
_prog.LastName = item.LastName;
_result.Add(_prog);
}
return _result;
}
5- بخش وب رو بیلد کنین
6- وب سرویس رو تو بخش سیلور لایت آپدیت کنین (اگه نیست اضافه کنین).
تصویر شماره 2
7- تو صفحه مورد نظرتون تو سیلورلایت یه گرید بندازین.
8 - ستونهاشو اضافه کنین و بعد به فیلد مورد نظر از کلاس برنامه نویس بایند کنین (این بند باید دستی و تو کد انجام میشه)
<sdk:DataGrid AutoGenerateColumns="False" Height="224" Name="dataGrid1" Width="256">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="ID" Binding="{Binding Path=ProgrammerID}"/>
<sdk:DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}"/>
<sdk:DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
9 - تو نمایه سی شارپ اون صفحه، تو فرم لود یه نمونه از سرویس بسازین و یه نمونه از اونت بسازین و بعد تابع رو فراخوانی کنین.
private BarnamenevisServiceClient client = new BarnamenevisServiceClient();
public MainPage()
{
InitializeComponent();
client.GetAllProgrammerCompleted += new EventHandler<GetProgrammersCountCompletedEventArgs >(client_GetProgrammersCountCompleted);
client.GetAllProgrammerAsync();
}
10- دست آخر تو اونت اجرایی تابع، مقدار بازگشتی رو به خورد گرید بدین یعنی:
namespace BarnameNevis
{
public partial class MainPage : UserControl
{
private BarnamenevisServiceClient client = new BarnamenevisServiceClient();
public MainPage()
{
InitializeComponent();
client.GetAllProgrammerCompleted += new EventHandler<GetProgrammersCountCompletedEventArgs >(client_GetProgrammersCountCompleted);
client.GetAllProgrammerAsync();
}
void client_GetAllProgrammerCompleted(object sender, GetProgrammersCountCompletedEventArgs e)
{
uxProgrammerDataGrid.ItemsSource = e.Result;
}
}
11- مصدوم آماده است. اف 5 لطفا