ضمنا دوستان نام خانوادگی من تقوی جو نوشته میشه و تقواجو خونده میشه مثل عیسی و موسی!:قهقهه:
Printable View
ضمنا دوستان نام خانوادگی من تقوی جو نوشته میشه و تقواجو خونده میشه مثل عیسی و موسی!:قهقهه:
سلام دوباره بر (تقوی جو) عزیز
دوست عزیز من دوباره کاری که شما گفته بودید رو تست کردم اما به دلیل اینکه من تو sql server ، سروری با نام پیشنودی (به عنوان مثال کانکشن استرینگ خودتون) که SQLEXPRESS// داشته باشه ندارم و نام سرور من فقط OMID-PC خالی است به همین دلیل نیازی به // یا / نیست و همه حالات رو تست کردم اما باز هم نشد!!
لطفا راهنمایی بفرمایید ممنونم
علیک سلام.
اصلا یه کار جدیدتر میکنیم که دیگه به این مشکلات برنخوریم. استفاده از دیتاست!
تو پست بعدی اول این رو میگم بعد میریم سراغ عکس
یاعلی التماس دعا
سلام به همه
بریم سراغ وعده ای که با آقا ایمان داده بودیم.
با رایت کلیک تو پروژه بخش web، و با استفاده از گزنیه AddNewItem از کاتوگوری دیتا یه دونه DataSet به انتخاب و نامگذاری (در اینجا ProgrammerDataSet) وبه پروژه اضافه کنین.
خوب
حالا تو دیتاست رایت کلیک کنین و یه دونه تیبل آداپتور اد کنین.
همین که میخواد اد بشه صفحه اضافه کردن کانکشن استرینگ میاد.
دکمه رشته ارتباطی جدید (NewConnectionString) رو بزنین.
دوباره یه صفحه مودال باز میشه. از کمبوباکس اول نام سرور رو انتخاب کنین. بعد ذیلش نام کاربری و پسورد یوزر دیتابیس رو وارد کنین و دست آخر نام دیتابیسی که به این یوزر مپ شده رو هم انتخاب کنین.
اول دکمه تست رو بزنین تا مطمئن شین (دکمه پایین چپ)
بعد دکمه اوکی رو بزنین. تا صفحه کانشکن جدید بسته بشه
در ادامه به کانکشن استرینگتون اسم بدین (در انیجا ProgrramerConnectionString)
دوباره ادامه
حالا با زدن دکمه ساخت کوئری (Query Buliing) صفحه ساخت کویری باز میشه، تیبل مورد نظر رو اضافه کنین، توش کویری مورد نظر رو بنویسین
نکست کنین
اسم کویری رو بنویسین
و فینیش بزنین.
حالا بیلد کنین.
سلام به همه
ببخشید دیروز عجله ای شد نتونستم عکسهاشو ضمیمه کنم. تصویرها رو به ترتیب نگاه کنین.
بعد از ساخت دیتاست و آداپتور و کوئریهای لازم و بیلد کردن اون، برین تو وب سرویس و یه تابع جدید بنویسن با استفاده از آداپتور و متدهاش، پروژه رو بیلد کنین و ادامه کار رو هم دیگه میدونین (آپدیت کردن وب سرویس تو بخش سیلورلایت و ...)
متد جدیدی که تو وب سرویس نوشتم:
[OperationContract]
public int GetProgrammerCount()
{
int _result = 0;
BarnameNevisDataSetTableAdapters.ProgrammerTableAd apter adapter = new BarnameNevisDataSetTableAdapters.ProgrammerTableAd apter();
_result = (int)adapter.GetProgrammerCount();
return _result;
}
فقط یه نکته اینکه تعداد تصاویری که تو هر پست میشه ضمیمه کرد محدوده! لذا طی چند پست خدمتتون تقدیم میکنم.
ادامه تصاویر
باز هم ادامه تصاویر
و بازهم ادامه تصاویر
دیگه کار از گام به گام داره به نیم گام به نیم گام تبدیل میشه
امیدوارم که دیگه این سری مفید باشه و دوستان بتونن استفاده کنن
سلام دوست عزیز (خانم یا آقای -----|------ )
این توضیح های که دادم در واقع مراحل 4 و 5 و 6 و 7 و 8 از پست شماره 35 بودند که اونجا همه کار ها رو دستی انجام دادیم ولی اینجا با بهره گیری از ای دی او دات نت!
منظورتون رو واضح تر و لطفا همینجا مطرح کنین!
ادامه کار عین بقیه! پست 36 و به بعد!
بابا silverlight ! اول ازتون تشکر می کنم دوم آموزشتون کی شروع میشه؟ سوم اینکه اگه آموزشتون در طی هر چند گام با یک مثال از اون گامها همراه شه عالی میشه
ببخشید! توی ضمیمه ها تون امکان جمه آوری آموزش های تابحال (pdf ای ...) هست؟؟؟
سلام به همه و حسین آقای گل!
خیالت راحت مهندس! نهضت ادامه دارد!
مفصل در خدمت خواهم بود.
سلام به همه
بعد از مدتی که سایت برنامه نویس بالا نمی اومد (صادقانه اینا بهونه بود، سر منم شلوغ بود)، بین آموزشمون فاصله افتاد. حالا امروز میخوایم ادامه بدیم و بریم سراغ وعده قبلی مون یعنی عکس:
اولین مطلب در مورد گذاشتن عکس به صورت استاتیکه:
1- از تول باکس یه کنترل عکس (Image) بندازین تو صفحه زمل و نامگذاری کنین. (در اینجا uxImageBox )
تصویر شماره 1
2- رو بخش سیلورلایت رایت کلیک کنین و یه پوشه درست کنین به نام همون ایمیجز. بعد رو خود پوشه هم رایت کلیک کنین و از گزینه Add>Existing Item استفاده کنین و یه تصویر به پوشه ایمیجز اضافه کنین.
تصویر شماره 2
نکته خواهشا عادت کنین به پوشه بندی و نیم اسپیس سازی و ... که تو پروژه های بزرگ گیج میشه آدم!
3- حالا ایمیج باکس رو انتخاب کنین و از تو پنجره پراپرتیز (جنوب شرقی استودیو معمولا) پراپرتی سورس این قاب رو مقدار دهی کنین به با زدن دکمه براوزش و انتخاب تصویر مورد نظرتون.
تصویر شماره 3
دست آخر هم با تنظیم بقیه پراپرتی ها، حالت بهینه تصویرتون رو بدست بیارین مثلا مثل استرچ کردن.
تو قسمت بعدی گذاشتن تصویر به صورت دینامیک رو تقدیم خواهم کرد.
در این ماه شعبان، دوستان رو از دعای خیر خودتون بی نصیب نذارین.
سلام به همه و با کمی تاخیر نیمه شعبان و سالروز میلاد منجی بشریت رو به همه تبریک میگم
طبق دستور کار قبلی امروز میریم سراغ مقدار دهی تصویر با کد و به صورت دینامیک:
1- تو همون سالوشن قبلی مون، تو صفحه زمل، یه دکمه بندازین و نامگذاری کنین (در اینجا Set Image). قصد داریم به دنبال کلیک شدن این دکمه، یه عکس موجود در ریسورس در مقدار سورس ایمیج باکس (به پست قبلی توجه کنین) ست بشه.
تصویر شماره (1)
2- اونت کلیک این دکمه رو بسازین: دو روش وجود داره:
یک: دابل کلیک کنین روش: این روش برای همه جا کار راه انداز نیست.
دو: تو تگ اصلی کنترل اونت مورد نظرتون رو بنویسین و یه نیو کنین مانند تصویر شماره (2) - این روش برای همه کنترلها به کارمیاد.
نکته: تو مقداردهی از طریق کد، شما نمی تونین پث (Path) عکس رو از ریسورس مستقیم بذارین تو مقدار پراپرتی سورس عکس، بلکه باید اول یه نمونه از کلاس بیت مپ (BitMap) از نیم اسپیس (System.Windows.Media.Imaging) بسازین و پث رو در قالب یه یو آر آی (URI) به خوردش بدین و دست آخر مقدار پراپرتی سورس عکس رو با این بیت مپ پر کنین.
این که چرا تو مقدار دهی کردن در صفحه زمل (XAML) این ادا و اصول رو در نمیاریم اینه که خود ویژوال استودیو زحمت این کارها رو میکشه!
3- خوب تو اونت اجرای دکمه، کد زیر را بنویسین با توجه به توضیحات بالا البته:
البته یه کمک دیگه اینکه برای رفتن به اونت مورد نظر، رو اونت مورد نظرتون تو صفحه زمل رایت کلیک کنین و نویگیت (Navigate) کنین به رویداد مورد نظرتون - تصویر شماره (3)
تصویر شماره (4)
uxImageBox.Source = new BitmapImage( new Uri("/BarnameNevis;component/Images/Avator.jpg", UriKind.Relative));
البته گاهی مرض مجمل نویسی بنده عود میکنه، ولی برای دوستانی که یه مقدار تازه کارند، توضیح هم عرض خواهم کرد.
4- خوب دیگه هیچی! نکته فقط همونی بود که گفتم! برنامه رو اجرا کنین! مصدوم آماده است. F5 عنایت فرمایین.
تو پست ها بعدی نحوه آپلود کردن و ذخیره عکس تو پایگاه داده رو خدمتتون عرض خواهم کرد.
برای سلامتی و تعجیل در ظهور آقا و مولامون، یه صلوات از ته دل بفرستین.
التماس دعا
یادم رفت بگم::لبخند:
این مفصلا همون کد بخش 3 پست بالا بود. در واقع اول یه نمونه یو آر آی ساختم با آدرس پث تصویر.
Uri _uri = new Uri("/BarnameNevis;component/Images/Avator.jpg");
BitmapImage _image = new BitmapImage(_uri);
uxImageBox.Source = _image;
بعد یه نمونه بیت مپ ساختم (از اور رید دوم کلاس بیت مپ استفاده کنین از تون یو آر آی میخواد.)
دست آخر هم مقدار دهی سورس ایمیج باکس با مقدار ایمیج ساخته شده!
سلام به همه
خریدنی نیست! پیدا کردنیه!:چشمک:
تو پراپرتی باکس! این ویژگی تمام آبجکت هاست. پنجره پراپرتیز رو هم تو جنوب شرقی ویژوال استودیو (به صورت پیش فرض) می تونین پیدا کنین.
تو عکس ضمیمه هم بهش اشاره شد.
سلام
دست شما درد نکنه
با تشکر
سلام .
می شه لطفا بگین که خود فولدر باید آپ بشه یا محتواش ؟
من تو لوکال با اس کیو ال راحت ارتباط بر قرار می کنم ولی موقعی که آپ میکنم error میده و فقط صفحه اول سایت بالا میاد
سلام به همه و شبتون بخیر
میلاد خانم معصومه رو هم بهتون تبریک میگم و اونهایی که دستشون به ضریح میرسه رو هم التماس دعا داریم!
اول یه خسته نباشید به خودم بگم که بالاخره از طوفان ثبت نام ورودی های جدید دانشگاه خلاصی پیدا کردم.
دوم هم یه عذرخواهی از بابت تمامی دوستانی که به این تاپیک سر میزند تا تو بحث شرکت کنند.
و اما پاسخ این دوستمون:
برای اینکه اشکال کار کامل قابل درک بشه باید یه چند تا نکته عرض کنم.
تو سیلورلایت اگه دقت کرده باشین ما یه وظیفه جابه جایی دیتا و داده رو به یه سرویس واگذار میکنیم. یه سرویس از نوع دبیلیو سی اف (wcf) که ارتباط با سیلورلایت در اون فعال شده است یعنی (silverlight-enalbled) که تو تمپلیتهای نیو آیتم وجود تو کاتوگوری وب هست.
و از توابعی که تو این سرویس نوشته شده استفاده میکنیم.
پس با این تفاصل باید دقت کنیم که صرف آپلود کردن اون سه تا پوشه و چند تا فایل کانفیگ کافی نخواهد بود البته برای دریافت دیتا
(این البته را واسه حالتی میگم که از سیلورلایت به عنوان یه بنر مدیا یه چیزی از همون فلشهایی که بالای سایت ها میذارن و یا یه پلیری که فایل مدیاشو رو از یه پوشه تو هاست میخونه، استفاده شده باشه خوب بالتبع دیگه نیازی به سرویس نخواهد بود)
سلام به همه
شبتون بخیر، به پاسخ بالا مناسب دیدم که این توضیح ریز رو هم اضافه کنم.
اگه دقت کرده باشین بعد از اینکه ما به پروژه ی وب سالوشن مون یه وب سرویس اضافه کردیم، میام تو پروژه سیلور سالوشنمون رفرنس وب سرویس رو اضافه میکنیم. (به یاد بیارین پست شماره 36 رو)
به دنبال این اضافه کردن یه فایل کلاینت کانفیگ به پروژه سیلور اضافه میشه:
تصویر شماره 1
فایل رو باز کنین. تو تگ کلاینتش آدرس یوآر الی که این وب سرویس از اون به پروژه اضافه شده دیده میشه که در اینجا طبیعتا لوکال هاست و پورتش خواهد بود:
تصویر شماره 2
حتما اگه سایت سیلورلایتی نوشتین که از وب سرویس توش استفاده کردین، قبل از آپلود این فایل رو باز کنین و آدرس سایت خودتون رو به جای لوکال هاست وپورت بنویسین!
تصویر شماره 3
با سلام و خدا قوب به آقای تقوی جو
بحث واقعا خوبی را شروع کردید
من مدتی بود که میخواستم silverlight را شروع کنم و حالا این تاپیک واقعا من را کمک میکنه
بیصبرانه منتظر ادامه آموزش هستم
سلام به همه
عرض ادب واحترام به همه دوستان و خواهر بزرگوارمون سرکار خانم دشتی
مطلب امروز ادامه مقوله عکس و این بار آپلود اون به پایگاه داده است.
مطالبی که ذیلا خدمتتون عرض میکنم برای جلوگیری از تکرار، در راستا و مرتبط با پست قبلی آپلود عکس (شماره 64) تقدیم میشه.
خوب ما دکمه براوز و دریافت تصویر رو تهیه کردیم و حالا میخوایم که اون رو وارد دیتابیس کنیم.
قبلا توضیح مطلب درباره نحوه نگهداری تصویر نکاتی رو عرض کنم:
محل نگهداری تصویر: یکی تو دیتابیس، یکی تو یه پوشه تو سرور و یکی هم تو سایت های آپلود عکس. برای نگهداری عکس تو دیتابیس، عکس رو بعد از آماده سازی به آرایه ای از بایت تبدیل میکنیم و اون بایت هارو تو دیتابیس ذخیره میکنیم، تو روش دوم عکس رو کپی میکنیم تو یه پوشه خاص و نام و مسیرش رو تو پایگاه داده ذخیره میکنیم، روش سوم یو آر ال عکس رو ذخیره میکنیم.
نکته های بعدی در مورد نوع تصاویر مد نظر و اندازه اونهاست که برای جلوگیری از اینکه پست مون فقط به توضیح و لالایی سپری نشه ادامه نکات رو تو پست های بعدی میگم و حالا بریم سراغ کد:
هدف پیاده سازی روش اول:
برای آپلود کردن ما مثل ای اس پی دات نت کنترل آپلود نداریم و باید خودمون بسازیم:
1- یه کنترل بردر (Border) بندازین تو فرم و یه کنترل ایمیج (Image) هم تو شکمش و بعد نامگذاری کنینش. (در اینجا uxUserImageBox) تصویر شماره 1
2- یه دکمه بندازین کنارش و نامگذاریش کنین (uxUploadImageButton) و بعد براش اونت (Event) کلیک بسازین. (ساخت اونت : بند دوم پست 64)
3- تو شکم اونت کلیک دکمه، باید از کلاس Open File Dialog یه نمونه بسازیم و با استفاده از اون عکس مورد نظر رو دریافت کنیم:
برای جلوگیری از انتخاب چند تا تصویر، ویژگی مالتی سلکت رو کور کنین و اگه خواستین فرمت عکس هایی که میشه گرفت رو هم فیلتر. با استفاده از شرط if مقدار بازگشتی متد شودیالوگ رو کنترل کنین که حتما چیزی انتخاب شده باشه (کست ضمنی به بول فراموش نشه)
private void uxAddUserPicButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openDilog = new OpenFileDialog();
openDilog.Multiselect = false;
openDilog.Filter = "Image|*.jpg|*.JPG";
if ((bool)openDilog.ShowDialog())
{
}
else
MessageBox.Show("Nothing Selected.");
}
تو کلاس OpenFileDiolog متدهای لازم از جمله باز کردن و خواندن (OpenRead) تدارک دیده شده که این متد فایل رو باز میکنه و بعد از خوندن یه خروجی استریم (stream) بهمون میده
حالا دیگه باید یه تابع بنویسیم که استریم رو به بایت و ایمیج تبدیل کنیم.
4- تابع تبدیل استریم به آرایه ای از بایت
[code][
public static byte[] ConvertStreamToByte(Stream stream)
{
BinaryReader binary = new BinaryReader(stream);
byte[] _resultBytes = binary.ReadBytes((int)stream.Length);
return _resultBytes;
}
/CODE]
لطفا اضافه کردن نیم اسپیس لازم (using System.IO;) فرامویش نشه!
5- تابعی برای تبدیل استریم به تصویر
این جا هم نیم اسپیس (using System.Drawing;)
public static Image ConvertByteToImage(byte[] byteImage)
{
Image _resultImage;
MemoryStream stream = new MemoryStream(byteImage, 0, byteImage.Length);
stream.Write(byteImage, 0, byteImage.Length);
_resultImage = Image.FromStream(stream, true);
return _resultImage;
}
6- حالا کد رو تکمیل میکنیم:
ابتدا، عکسی که گرفتیم رو تو سورس اون ایمیج که کنار دکمه هست گذاشتیم تا خود کاربر هم ببینه که چی انتخاب کرده!
OpenFileDialog openDilog = new OpenFileDialog();
openDilog.Multiselect = false;
openDilog.Filter = "Image|*.jpg|*.png|*.JPG";
if ((bool)openDilog.ShowDialog())
{
uxUserImageBox.Source = ConvertStreamToImage(openDilog.File.OpenRead());
byte[] userImage = ConvertStreamToByte(openDilog.File.OpenRead());
}
else
MessageBox.Show("Nothing Selected.");
بعدش هم یه آرایه بایت درست کردیم به نام userImage و این همون آرایه بایتی است که قراره بره تو دیتا بیس. در مورد نحوه ارسال داده به پایگاه داده هم تو پست های قبل گفتم ولی اگه بازهم نیاز باشه در مورد بایت هم عرض خواهم کرد.
تا اینجا داشته باشید. تا بعد:قلب:
سلام به همه
امروز میخوام واکشی یه لیست اطلاعات از دیتابیس و نمایش اون رو تو دیتا گرید خدمت دوستان تقدیم کنیم. دوست خوبمون آقا معین تو این تاپیک پرسیده بودند.
برای آموزش، مطلب رو به دو بخش تقسیم میکنم: سرور ساید و کلاینت ساید.
پیش نیازهای لازم:
یه دیتابیس با حداقل یه جدول شامل چند تا فیلد
و اینکه پست های شماره 31 الی40 و 54 الی 59 رو خونده باشین تا نیاز نباشه که من در مورد ساختن سالوشن، دیتاست، سرویس، اونت و بقیه خورده کاری ها خیلی ریز بشم.
ممنون. تا شما یه پست های بالا رو مرور کنین من هم عکسهای آموزش رو تهیه میکنم.
سلام آقای تقوی جو
ما منتظریم همچنان
سلام به همه
و عرض ارادت و صبح بخیر
از دوستان تشکر میکنم که صبوری کردند.
بر حسب وظیفه امروز ساده ترین حالت نمایش لیست اطلاعات در گرید رو تقدیم خواهیم کرد.
من سعی میکنم به ساده ترین شکل ممکن بنویسم. اگه دوستان احساس میکنم که زیاده دیگه دارم ساده میگم و درازه گویی میشه، بگن تا یه کم جمع و جور تر کد بزنیم.
با فرض بر اینکه پیش نیازها رعایت شده اند(VS 2010 - SQL 2008 و نکات پست قبل):
میخواهیم لیست برنامه نویس هایی رو که دیتا بیس داریم رو نمایش بدیم.
در کل:
اول کلاسهای لازم رو میسازیم، بعد تابع لازم رو، بعد سرویس رو آپدیت میکنیم، بعد متد داخل سرویس رو فراخوانی میکنیم و دست آخر خروجی متد رو به گرید بایند میکنیم
اما گام به گام:
1- تو بخش وب پروژه مون یه کلاس اد کنین (RightClick->Add->Class) و نامگذاری کنین (Entities.cs). تصویر شماره 1
2- کلاس برنامه نویس رو با ویژگیهاش بسازین.
public class Programmer3- برین تو وب سرویس(BarnamenevisService.svc)، اون بالا، نیم اسپیس لازم برای تهیه یه لیست از کلاس برنامه نویس که نوشتیم (using System.Collections.Generic;) رو اضافه کنین.
{
/// <summary>
/// Properties - ویژگیها
/// </summary>
public int ProgrammerID;
public string FirstName;
public string LastName;
/// <summary>
/// Constructor - سازنده
/// </summary>
public Programmer()
{
}
}
4- یه متد بنویسین برای دریافت تمام برنامه نویسهای موجود تو پایگاه داده ( بدون ورودی و با خروجی لیستوار از کلاس برنامه نویس):
5- بخش وب رو بیلد کنین
[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;
}
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 لطفا
[
public class Programmer
{
/// <summary>
/// Properties - ویژگیها
/// </summary>
public int ProgrammerID;
public string FirstName;
public string LastName;
/// <summary>
/// Constructor - سازنده
/// </summary>
public Programmer()
{
}
}
ممنون از کد بالا
حالا چه طوری با dataset میتونیم گریدمون رو پر کنیم؟
سلام مجدد به همه
معین جان، متوجه نمیشم که چی میخواین؟ اصلا دیتاست رو میخواین چی کار؟
شما یه نکته رو توجه نمیکنین که لایه داده ها (Data Layer) ما سمت سرور ه نه سمت کلاینت! پس دیتاست که می فرمایین رو نمیشه کلاینت ساید به کار برد.
تو اون تابع که تو سرویس نوشتیم در واقع ما دیتاست رو تبدیل کردیم به یه لیست از شی مورد نظر، بعد با استفاده از سرویس بسته شامل اون لیست رو میفرستیم به سمت کلاینت.
یعنی در واقع ما دیتاست رو به گرید متصل نمیکنیم بلکه نتیجه اجرای متد موجود تو سرویس (یعنی e.Result) که میشه یه نوع لیستی (به نام آبزروال کالکشن که نوعی لیسته ولی با لیست تفاوت داره) رو به عنوان منبع مورد نظر به خورد گرید میدیم (بند 10 پست قبلی).
امیدوارم که مفهوم اینکه یه بار یه نمونه از سرویس درست میکنیم، بعد اول به صورت آسینک (()AsynC#####.######) متد موجود توش رو فراخوانی میکنیم و بعد تو اونت پایان یافتنش (compeleted#####.######) کار مورد نظرمون رو انجام میدیم رو دقت کرده باشین!
اگر هر قسمتش کافی نبود، می تونم مجددا خدمتتون دوستان توضیح کاملتر بدم.
همه تونو دوست داریم . :قلب:
التماس دعا
با سلام
خوب اینجوری که برای داده های زیاد سرعت میاد پایین.
سلام به همه
از یه نگاه حرفتون درسته! یعنی یه لیست با وب سرویس رو از دیتابیس لود کنیم و نمایش بدیم، بسته به حجم دیتامون در مقایسه با لود همون مقدار با استفاده از مثلا ای اس پی دات نت و دیتاست، در حد چند میلی ثانیه کندتر میشه ولی در مجموع کل اپلیکیشن باید نگاه کنیم.
ببینین اگه بخواین یه برنامه خیلی خوشدست تحت وب داشته باشیم باید کلی جاوا اسکریپت و اینجور چیزا به کار ببریم که در مجموع هر بار باید کلی لود بشه (حتی اگه از ای جکس استفاده کنیم) ولی تو اینجا یه بار برنامه لود میشه بعد نصبش میکنی (اشاره به ویژگی OOB سیلورلایت) و من بعد فقط یه ارتباط داده ای نیازه! من یه برنامه رو با هر دوتاشون نوشتم!
در مجموع نگران حجم دیتا و سرعت نباش! تقریبا این مورد آزارت نخواهد داد یا حداقل بهتره بگم بیشتر از حالات دیگه و تکنولوژیهای دیگه آزار نخواهد داد!
دست آخر یه برداشت دیگه ای هم از سوال میشه کرد و اون اینه که اشکال به روش کار تبادل اطلاعات با استفاده از سرویس و ساخت کلاس و عدم امکان مستقیم از دیتاست وارد کنین. باید عرض کنم که روش دیگه برای تبادل اطلاعات بین سرور و کلاینت وجود نداره. چون مثلا تو ای اس پی دات نت، وقتی ریکوئست میرسه به آی آی اس، یه نمونه از هندلر کلاس مربوطه اش ساخته میشه و جزئیات صفحه به انضمام پاسخ درخواست فرستاده شده به مرورگر کلاینت برگردونده میشه و اونجا هم نمایش داده میشه! اینجا دیگه درخواست به اون معنا نیست و عملا باید خود دیتا تبادل بشه و تو کنترل نشون داده بشه!
سلام
من با استفاده از linq تونستم از وب سرويس اطلاعات ارسال كنم
و توي ديتا گريد نمايش بدم
حالا با اين روش آيا مشكل سرعت حل ميشه ؟ يا سرعت پايينتر مياد ؟
استفاده ازلینک روان بخشی به کاره و تاثیر رو سرعت تبادل اطلاعات نمیذاره! چرا که باز هم دارین از وب سرویس مذکور استفاده میکنین
اگه از ریا سرویس استفاده کنین، در مقایسه، یه کم تفاوت میکنه اون هم به خاطر ساز و کار ریا ست وگرنه بازهم انتقال اطلاعات با استفاده از یه وب سرویسه!
مرسي از راهنماييات
حالا يك سوال ديگه
من child window دارم.چه طوري ميتونم بهش افكت بدم.مثلا موقع show شدن بچرخه و ظاهر بشه!؟
سلام به همه
خدمتتون عرض کنم انیمیشن و افکت واسه کنترل دیگه نوشتم ولی واسه ویندوچایلد ننوشتم.
ولی مثلا میشه با نوشتن یه استوری بورد (Story Board) که بخواییم با پلاس پلاس کردن طول و عرض با انتخاب مبدا مناسب در زمان اجراش (Duration) نحوه باز شدنش لغزشی کنیم یا تغییر پله پله اوپاسیتی فید کنیم!
ولی چرخش و دوران امکانی ندیدم!
نظر دیگه ای نداریم و زیاد هم مایل نیستم تو اجرای چایلد ویندو مانور بدم! عذر میخوام.
خیلی مصر باشی یه سر برو تو کدپلکس یا کدپروجکت، هستند چند نفری که چایلد ویندوی مودال نوشته از بیس، ازش اون کدها استفاده کن و تغییر بده و الی آخر.
سلام به همه
فرا رسیدن ماه پیروزی خون بر شمشیر رو تسلیت و تهنیت میگم
این آموزش یه کم ناگهانی و بی ربط با بقیه است ولی لازم شد.
یه برنامه hta. نوشتم که میشه باهاش ورژن سیلورلایتی که رو سیستم نصبه رو فهمید.
توضیح اینکه پسوند اچ تی ای به معنی html application
رسما یه فایل اچ تی ام اله که شما فقط بعد از ذخیره کدهاتون، پسوندشو به hta. ویرایش کنین.
تو این کد من یه فانکشن جاوا اسکریپت نوشتم که توش یه نمونه از شی اکتیو ایکس ای جی کنترل درست میکنیم و با پارامتر ورودی اجراش میکنیم. یعنی یه بار با ورودی 4 اجرا میکنیم، اگه جواب نداد با 3 اگه نه با 2 بازم نه با یک واگه با هیچکدوم نشد پس نیست.
البته زیاد روش جالبی نیست ها! چون زیر ورژن ها رو نمیشه تشخیص داد.
<html>
<head>
<title>Find Silverlight Version</title>
<script type="text/javascript" language="javascript">
function GetSilverlightVersion() {
var silverlightVersion = -1;
getSilverlightVersion = function () {
try {
// ایجاد یه نمونه از آبجکت اکتیو ایکس
var control = new ActiveXObject('AgControl.AgControl');
if (control.IsVersionSupported("4.0")) {
silverlightVersion = 4;
}
else if (control.IsVersionSupported("3.0")) {
silverlightVersion = 3;
}
else if (control.IsVersionSupported("2.0")) {
silverlightVersion = 2;
}
else {
silverlightVersion = 0;
}
control = null;
}
catch (e) {
// if any exception while creating the ActiveX Object,
// will set the silverlightVersion as -1.
silverlightVersion = -1;
alert("Unable to create the ActiveX Object from Browser window.");
}
}
getSilverlightVersion();
// بازگرداندن مقدار بدست آورده
return silverlightVersion;
}
</script>
</head>
<body>
<script type="text/javascript">
// اینجا تابع فراخوانی شده
var silverlightVersion = GetSilverlightVersion();
// مقدار منفی یک رو برای عدم توفیق در تشخیص در نظر گرفت
if (silverlightVersion == -1) {
document.writeln("Unable to detect the Silverlight Version.");
}
// مقدار صفر به معنی عدم نصب فرض شده
else if (silverlightVersion == 0) {
document.writeln("Silverlight is not installed in your PC.");
}
// دستور نمایش ورژن
else {
document.writeln("Version of Installed Silverlight is: " + silverlightVersion);
}
</script>
</body>
</html>
<Popup x:Name="popUpChild" Canvas.Top="50" Canvas.Left="50">
<Border BorderBrush="Black" CornerRadius="10" Background="Aqua" Width="100" Height="100"></Border>
<Popup.RenderTransform>
<RotateTransform x:Name="rotateMe" CenterX="75" CenterY="75" ></RotateTransform>
</Popup.RenderTransform>
</Popup>
<Storyboard x:Name="rotateStory">
<DoubleAnimation BeginTime="00:00:00" Duration="0:0:5" Storyboard.TargetName="rotateMe" Storyboard.TargetProperty="Angle" From="0" To="360"/>
</Storyboard>
rotateStory.Begin();
popUpChild.IsOpen = true;
این که گفتی خوبه ولی مربوط میشه به یه پاپ آپ نه چایلد ویندو که نمیشه رپ کرد!
یه کاری که میشه کرد که پروژه رو با بلند باز کنیم بعد روی چایلدویندو مورد نظر رایت کلیک کنیم و گزینه ویرایش تمپلیت رو انتخاب کنیم، بعد تو زملش به دنبال<VisualStateGroup x:Name="WindowStates">و سعی کنین استوری بورد مورد نظر رو توش پیاده سازی کرد.
<VisualState x:Name="Open">
ولی بازهنوز نظر من اینه که شما یه نگاهی به این تاپیک بندازی و اگه بتونی این رو واسه خودت سفارش سازی کنی
مفهوم ChildWindow تو silverlight مثل winform یا wpf نیست .... یعنی childwindow یه چیز جداگانه نیست که روی صفحه نمایش داده میشه ... بلکه فقط یه usercontrol هست که تو runtime به صفحه اضافه میشه ... ما اون قدیم ها که این ژیگول بازیا نبود همین کار رو دستی انجام میدادیم ... حالا اومدن اینو به صورت کنترل در آوردن که کار راحتتر بشه ... یعنی این داخل این childwindow یه usercontrol یا از grid ارث برده و یا layoutroot مربوطش یه grid هستش ..
برای انجام این کار نمیشه از childwindow مربوط به خود silverlight استفاده کرد ...
برای انجام این کار باید خودتون یه childwindow بسازین :
1 - یه usercontrol تعریف کنین و این usercontrol رو به شکل یه window طراحی کنین ( با titlebar و دکمه بستن و ... )
2 - حالا این usercontrol رو موقع اجرا به صفحتون اضافه کنین ...
سلام
میشه نحوه بارگذاری یک سیلورلایت وب پروجکت رو روی نت یا IIS آموزش بدین لینک کمکی واسه آموزش بدین؟
ایا میشه سیلورلایت پروژه رو هر کدوم از page ها رو یک فایل dll مجزا واسش ساخت که واسه اپلود روی سایت و پشتیبانی بهتر بشه عمل کرد
و کلا چطوری من dll پروژه رو داشته باشم و روی سایتم آپلود کنم تا کسی نتونه ببینه چی استفاده کردم تو پروژه ؟
ممنون میشم بهم کمک کنین
سلام به همه
پاسخ قسمت اولتون رو باشه بعد
دوم: در واقع به ازای هر پروژه ای که داخل یه سالوشن باز میشه یه دی ال ال درست میشه، شما اگه میخوای چند تا دی ال ال داشته باشی، باید به همون تعداد که میخواین داخل سالوشن پروژه درست کنین و پروژه ها رو بهم دیپندنسی بدین.
سوم که نکته خوبی بود و من خودم روش یه کم کار کردم چون نیاز داشتم:
این هم رو میگن کد گیج کردن (obfuscation) که سری نرم افزارها (مثل Xeno , RedGate , Crypto , ) هستند که پروژه رو بهش میدی، واست کد میکنه تا هرکسی که بخواد با رفلکتور (reflector) کدتو ببینه نتونه!
یا حتی فایل اجرایی رو میشه فشرده کرد! نسخه های رایگانش هم هست.
فراموش کردم بگم که من خود از این استفاده میکنم
سلام .
چجوری میشه مثل این مثالبرای Font هم یک Resource تعیین کرد و برای کنترل های مختلف آن را نسبت داد؟نقل قول:
در این نمونه می خواهیم یک RadialGradientBrushتعریف کرده سپس آن را به خاصیت Backgroundچند دکمه نسبت دهیم.
کد:
<Window.Resources> <RadialGradientBrush x:Key="btnGRBrush" > <GradientStop Color="Azure" Offset="0.4"/> <GradientStop Color="Peru" Offset="0.55"/> <GradientStop Color="PaleGoldenrod" Offset="1"/> </RadialGradientBrush> </Window.Resources> <StackPanel > <Button Background="{StaticResource btnGRBrush}" Margin="5">Button 1</Button> <Button Margin="5">Button 2</Button> <Button Background="{StaticResource btnGRBrush}" Margin="5">Button 3</Button> <Button Margin="5">Button 4</Button> </StackPanel>
سلام به همه
اون مثال رو از پست شماره چند نقل قول کردین؟
در مورد فونت ریسورس کردن، تو چند پست های اول تاپیک نوشته ام.
سلام .
من از آموزشWPF آقای اقدم (پست4)) استفاده کردم .
منظورم اینه که مثلا در مورد کنترل هایی که می خوایم این سه ویژگی رو ست کنیمبیایم به صورت ریسورس درآورده و مثلا اون رو به FontStyle کنترل نسبت بدیم که هربار این ویژگی ها در تگ کنترل تکرار نشن .کد HTML:FontFamily="Traffic" FontSize="15" FontWeight="Bold"
سلام.
سوال قبلی ام جواب داده نشد.
این مهم تره لطفا راهنمایی کنید.
برای اینکه زبان جاری کیبورد در هنگام باز شدن صفحه فارسی بشه باید چکار کنم؟
(با توجه به این که در سی شارپ از InputLanguage.CurrentInputLanguage استفاده می کنم.)
مرسی
سلام می تونی در محیط xaml این کد رو بنویسی.
InputLanguageManager.InputLanguage="fa"
سلام
یه سوال آیا در Silverlight چیزی مثل تم و CSS وجود داره ؟چه طور میشه مثل دات نت گفت مثلاً تمامی باتنها که تو صفحه میزاریم همشون بک گراند مثلاً سبز فوت قرمز تاهوما با اندازه 13 داشته باشه که واسه هرکدوم تعریف نکنیم!!!
مرسی
می تونی از style ها استفاده کنی
که style رو می تونی در محیط app.xamlبسازی
این پست می تونه بهت کمک کنه.
https://barnamenevis.org/showthread.p...ر-می-کنه