به نظر من اگر بچه ها موافق باشند،سوالات را به گروه SilverLight انتقال یابد چون اینجا ظاهرآ مثل بقیه تاپیک ها ،متاسفانه متروکه شده
به نظر من اگر بچه ها موافق باشند،سوالات را به گروه SilverLight انتقال یابد چون اینجا ظاهرآ مثل بقیه تاپیک ها ،متاسفانه متروکه شده
منظورتونو خوب نفهمیدم ! یعنی سوالامونو خصوصی بپرسیم یا اینکه برا هر کدومشون یک تاپیک بزنیم ؟!
سلام به همه
یه کم خیلی سرم شلوغ شد و یه کم خیلی شرمنده دوستان شدم و نتونستم در خدمتتون باشم. امیدوارم که بزرگواری خودشون ببخشند.
داشتم امشب رو یه چیزی کار میکردم. یهو یادم اومد که اینجا یه سوالی در مورد تمینگ پرسیده شده بود. بعد اومدم تو سایت برنامه نویس و تالار سیلورلایت و ...
در حال بیشتر در خدمتتون خواهم بود. لطفا کسی به دل نگیره. ما که هیچ ادعایی نداریم. فقط چند کلمه بیشتر بلدیم و اون رو هم انتقال میدیم.
تم مجموعه ای استایل های از پیش تعریف شده است که به همه کنترلها اعمال میکنه. میشه تک تک این استایل رو هم به کنترل داد. پس لولو خور خوره نبود.
1- حتما باید تولکیت رو نصب کرده باشین. اگه نکردین هنوز از این جا دانلود کنین و ست آپ رو اجرا کنین خودش همه کار های برای اضافه شدن به ویژوال استودیو رو انجام میده
2- تم ها به دو روش میشه به فرمتون اضافه کنیم:
یکی اینکه رفرنس رو دستی اد کنیم، واسه رفرنس یه اسم محلی میذاریم و تو داخل تگ ها با بهکار گیری نام متسعار که گذاشتیم استفاده کنیم مثلا:
xmlns:them="clr-namespace:System.Windows.Controls.Theming;assembly =System.Windows.Controls.Theming.TwilightBlue"
1.jpg
این کار یه کم مهارت بیشتر میخواد ولی اگه یه موقع قرار باشه از تم ساخته شده خودتون استفاده کنین لازم میشه. چون باید با نیم اسپیسها آشنا باشین. ضمنا دقت کنین تم هایی که تو خودت تولکیت داده شده همه تو یه نیم اسپیس نیستند و متفاوتند.
روش دوم هم اینه که از تولباکستون از اون آخر ماخر ها تم مورد نظرتون رو از گوشش بگیرین و درگ دراپ کنین تو فرمتون. خودش یه رفرنس به نام تولکیت درست میکنه و یه نمونه از تم رو براتون تو زمل میاره.
حالا هر چی که داخل تگ های این تم ها قرار بگیره اون تم رو به خود میگیره! پس هواستون باشه که ته تگ رو با زدن </ نبدین ها! مثلا
<toolkit:TwilightBlueTheme>
<Button x:Name="CancelButton" Content="انصراف" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
<Button x:Name="OKButton" Content="ثبت" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />
</toolkit:TwilightBlueTheme>
تا اینجا نحوه استفاده از تم
2- نحوه عوض کردن تم
مطمئنا فکر نمیکنین که منظورم من از عوض کردن تو موقع طراحی و برنامه نویسیه! چون کافیه این رو پاک کنین و یکی دیگه بندازین بجاش
منظورم عوض کردن در ران تایمه:
نکته ای که باید اول کار بدونین اینه که کنترلها پراپرتی به نام تم ندارند که شما براحتی بتونین اون رو به یه مقدار جدید ست کنین.
نمیشود نمیشود نمیشود نمیشود نوشت
TextBlock txt = new TextBlock();
txt.theme = new TwilightBlueTheme();
این هم برمیگرده به ماهیت نگهدارندگی خود تم. یعنی خودش یه در برگیرنده است.
پس یه نمونه از کلاس کانتنت کنترل میسازیم و یه رفرنس از تم مورد نظرمون رو بهش تخصیص میدیم. (نکته کار اینجا بود) یعنی:
TextBlock txt = new TextBlock();
ContentControl newThem = new TwilightBlueTheme();
newThem.Content = txt;
بازهم فراموش نکنین که رفرنس تم جدید هم باید به یکی از دو روش بالا از قبل اضافه شده باشه ها! بعدا نگین فلانی نگفت!
ببخشید گنگی مطلب به خاطر ضعف امکان مفاهیم به زبان فارسی و عمومیه. شاید هم از ضعف تدریس بنده!
البته ممکنه یه کم قاطی کنین ولی به صورت اشاره گفتم. اگه لازم شد یه مثال کامل براتون تقدیم میکنم.
3- کاستومایز کردن تم.
این رو هم دارم مطالعه میکنم. هنوز کامل خودم نتونستم یه تم کامل بنویسم. یه چیزهایی پیاده سازی کردم. اما کلیات کاری که انجام میدیم اینه
یه عالمه استایل باید بسازیم. میشه گفت برای هر کنترل
مقدار نوع مورد هدف (TargentType) رو ابتدای استایل به کنترل مورد نظرمون نسبت میدیم. مثلا
<Style TargetType="Buuton"></Style>
بعد داخل هر استایل به اندازه هنرمون مانور میدیم با دادن مقدار به ویژگیهای اون کنترل با دستور ستر با انتخاب ویژگی مورد نظر و دادن مقدارش یعنی:
<Style TargetType="Button">
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="Foreground" Value="#FFCC23"/>
<Style/>
این تم رو در قالب یه رفرنس لوکال(روش اول از بند یک) اضافه کنین و استفاده کنین
هنوز خودم تبدیل به کنترل نکردم تم هام رو.
خوب دوستان شب عالی بخیر
امیدوارم که تو تمام مراحل زندگی به نتیجه تلاشتون برسین
سلام.
واقعا نمی دونم ایراد کار کجاست ؟!
اولا اینکه می تونیم یک متد داشته باشیم که متد و ایونت سرویسی (WCF Serviece) رو استفاده کنه و در ایونت متد(Compeleted...) متغیر boolean پابلیکی رو براساس مقدار برگشتی ایونت true یا false داده و بعد از خط کد فراخوانی متد و فراخوانی ایونت براساس این متغیر تصمیم گیری کنیم ؟
privatevoid Valid(....., SR_... sr)
{
SR_.SR_Client sR_ = new SR_.SR_Client();
فراخوانی متد
فراخوانی ایونت Compeleted
استفاده از متغیر بولین
}
مشکلی که من دارم اینه که در بار اول ایونت مربوطه اصلا Raise نمیشه بنابراین متغییر بولین اشتباه مقداردهی شده بعد خودش دوباره متد و ایونت رو اجرا می کنه و..
خدا کنه متوجه مشکلم شده باشین .
اگه توضیح اضافه تر هم لازم بود لطفا بگین کامل کنم .
completed رو فراخوانی نمیکنن ... event ها بر اساس شرایطی توسط خود سیستم raise میشن ... در اینجا تمام شدن متد و دریافت جواب باعث raise شدن event میشه ....
SR_.SR_Client sR_ = new SR_.SR_Client();
sR_.callMyMethosAsyncCompleted += new eventhandler(callmymethosdasyncc_completed);
void callmymethosdasyncc_completed(....,eventargument e)
{
bool result = e.result;
//do something with result
}
private void DoSomeThing()
{
sR_.callMyMethodAsync()
}
من طبق چیزی که شما گفتید اومدم ایونت Compeleted رو در کانستراکتور صدا زدم ، و بقیه هم مثل قبل ، ولی باز هم همون نتیجه رو داشت ، یعنی اون کاری رو که نباید براساس e.result انجام میداد ، انجام میشه و بعد ایونت raise میشه و پیغامی رو که در به دلیل غیرمجاز بودن اون request باید بده،میده !!!completed رو فراخوانی نمیکنن ... event ها بر اساس شرایطی توسط خود سیستم raise میشن ... در اینجا تمام شدن متد و دریافت جواب باعث raise شدن event میشه ....
کد:
SR_.SR_Client sR_ = new SR_.SR_Client();sR_.callMyMethosAsyncCompleted += new eventhandler(callmymethosdasyncc_completed);void callmymethosdasyncc_completed(....,eventargument e){ bool result = e.result; //do something with result}private void DoSomeThing(){ sR_.callMyMethodAsync()}
(داخل متدی که در WCF Service نوشتم جایی که متد async اش رو صدا زدم نمیره !!! و باید بگم در جاهایی دیگه از متد Async استفاده کردم و درست و به موقع هم اجرا میشه)
سلام به همه یه نکته ای رو ذیل گفته های ایکس لورد عرض کنم تو ترتیب ساخت اونت ها و فراخوانی آسینک متدها دقت کنین. وقتی به دنبال فراخوانی یه متد، یه سری چیزها رو موقتا غیرفعال میکین، صفر میکنین، فالس میکنین، رید انلی میکنین و الا آخر ممکنه. مراقب باشین که رویداد دیگه ای اونها رو به دست کاری نکنه! یعنی ممکنه یه متد یه چیزی رو غیرفعال کنه، بعد پشت سرش شما یه متد دیگه هم فراخوانی کنین و متد دوم زودتر به نتیجه برسه و رویداد اتمامش قصد فعال کردن اون شی رو داشته باشه در حالی که اولی هنوز تموم نشده! این جور مواقع از یه پرچم استفاده کنین. و اینکه ترتیب ساخت رویداد و فراخوانی متدهاشون هم مهمه و گیچ کننده! تو اجرا اول رویدادها ساخته بشند بعد متدش فراخوانی بشه!
سلام . ممنون بابت راهنمایی .
ولی میشه این قسمت
رو بیشتر توضیح بدین.یعنی ممکنه یه متد یه چیزی رو غیرفعال کنه، بعد پشت سرش شما یه متد دیگه هم فراخوانی کنین و متد دوم زودتر به نتیجه برسه و رویداد اتمامش قصد فعال کردن اون شی رو داشته باشه در حالی که اولی هنوز تموم نشده! این جور مواقع از یه پرچم استفاده کنین
من اینجوری متوجه شدم که شما میخوای یه کاری رو انجام بدی قبل از اینکه ایونت completed اجرا شده باشه ....یعنی اون کاری رو که نباید براساس e.result انجام میداد ، انجام میشه و بعد ایونت raise میشه
اگه شما میخوای یه چیزی رو بر اساس e.result تغیر بدی باید اونو توی eventhandler مربوط به ایونت completed بنویسی ... تو پست قبلی هم گفتم اینم یه نمونه واقعی ...
public partial class MainPage : UserControl
{
ServiceReference1.Service1Client sc;
public MainPage()
{
InitializeComponent();
sc = new ServiceReference1.Service1Client();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
sc.DoWorkCompleted += new EventHandler<ServiceReference1.DoWorkCompletedEven tArgs>(sc_DoWorkCompleted);
sc.DoWorkAsync();
}
void sc_DoWorkCompleted(object sender, ServiceReference1.DoWorkCompletedEventArgs e)
{
bool result = e.Result;
//استفاده از متغیر بول
//تغییراتی که قراره بر اساس
//result
//انجام بگیره باید در اینجا قرار بگیره
}
}
مشکله من این بود که ایونت Compeleted ام با تاخیر اجرا میشد همونطور که آقای تقوی جو گفتن:
برا حلش از enum Flags استفاده کردم و تقریبا درست شد، فقط مشکلم اینه که حالا ایونت compeleted وقتی چند بار پشت سر هم دکمه مربوطه رو می زنم در هر مرتبه به تعداد بیش از یکبار اجرا میشه ، بار اول 1 بار ، بار دوم 2 بار و ....!!!!!یعنی ممکنه یه متد یه چیزی رو غیرفعال کنه، بعد پشت سرش شما یه متد دیگه هم فراخوانی کنین و متد دوم زودتر به نتیجه برسه و رویداد اتمامش قصد فعال کردن اون شی رو داشته باشه در حالی که اولی هنوز تموم نشده! این جور مواقع از یه پرچم استفاده کنین
بازم از همگی ممنون
سلام به همه
خوب سه راه داریم:
وقتی دکمه زده شد، تو اونت اجرای دکمه (که تابع رو به صورت آسینک اجرا میشه) بعد از اجرای متد:
1- خود دکمه رو هم غیرفعال کنین تا کسی نتونه دوباره اون رو بزنه و تابع رو دوباره اجرا کنه. اون طرف هم تو رویداد اتمام تابع، دکمه رو فعال کنین.
2- یه بول پراویت واسه فرم درست کنین و مقدار اولیه اش رو مثلا فالس بدین. وقتی متد اجرا میشه اول چک کنین که مقدار این بول رو بررسی کنین اگه فالس بود متد آسینک اجرا کنین و به دنبال اجرا مقدار رو ترو کنین؛ ولی اگه مقدار بول ترو بود، یه مسیج باکس بدین که تابع در حال اجراست و یه کم صبر کنین و ری ترن (return) کنین.
3- از بیزی ایندکیتور استفاده کنین که تو تولکیت هست (busty Indicator) که در واقع یه گریدی (به یه پروکرس بار و یه متن پیام داخلش) است که روی فرم قرار میگیره و اجازه نمیده که هیچ کدوم های کنترلهای زیرش در دسترس باشه. بعد از اجرای تابع این بیزی رو شو کنین و بعد از اتمام هاید کنین.
سلام
من دوتا سوال داشتم
یکی اینکه من silverlight4 رو نصب کردم ولی توی vs10 گزینه ی silverlight4 رو ندارم!!!
یکی دیگه اینکه می خوام توی پنجره ی login برای use و pass به database دسترسی پیدا کنم،می شه بگید چجوری؟!
ممنون
سلام به همه
در مورد سوال اولتون
خوب صرف نصب کردن سیلورلایت چهار کافی نیست چون اون فقط ران تایم مربوط به مرورگرهاست که سندباکس لازم برای اجرا رو دراختیار کلاینت قرار میده.
حداقل باید شما سیلورلایت تولز رو هم نصب کنین. بهتره که دولوپر رو هم نصب کنین و نیز تولکیت. و البته یه روایت از منابع شیعی و سنی هم توصیه به نصب بلند و اس دی کاش کرده اند.
اگه اجازه بدین سوال دوم رو طی یه پست دیگه مفصلا عرض کنم.
ممنون
اگه ميشه لطف کنيد جواب اون يکيش رو هم بديد،اخه شنبه بايد پروژه رو تحويل بديم
سلام . ممنون
از روش بول پرایوت استفاده کردم . البته چون من تابع async رو در یک حلقه استفاده کردم، خیلی به غیرهمزمانی ش توجه نکرده بودم ، بنابراین ایندکس اول در حلقه رو اجرا کرده ، در صورتی که e.result درست بود اجرای ادامه حلقه صورت می گیرد، و در تمامی این مدت متغیر بولین false است و بنابراین عملیاتی که باید بعد از اجرای تابع async صورت گیرد بعد از true شدن این متغیر انجام می شود.خوب سه راه داریم:
وقتی دکمه زده شد، تو اونت اجرای دکمه (که تابع رو به صورت آسینک اجرا میشه) بعد از اجرای متد:
1- خود دکمه رو هم غیرفعال کنین تا کسی نتونه دوباره اون رو بزنه و تابع رو دوباره اجرا کنه. اون طرف هم تو رویداد اتمام تابع، دکمه رو فعال کنین.
2- یه بول
پراویت واسه فرم درست کنین و مقدار اولیه اش رو مثلا فالس بدین. وقتی متد اجرا میشه اول چک کنین که مقدار این بول رو بررسی کنین اگه فالس بود متد آسینک اجرا کنین و به دنبال اجرا مقدار رو ترو کنین؛ ولی اگه مقدار بول ترو بود، یه مسیج باکس بدین که تابع در حال اجراست و یه کم صبر کنین و ری ترن (return) کنین.
3- از بیزی ایندکیتور استفاده کنین که تو تولکیت هست (busty Indicator) که در واقع یه گریدی (به یه پروکرس بار و یه متن پیام داخلش) است که روی فرم قرار میگیره و اجازه نمیده که هیچ کدوم های کنترلهای زیرش در دسترس باشه. بعد از اجرای تابع این بیزی رو شو کنین و بعد از اتمام هاید کنین.
باز هم ممنون
سلام به همه
به جای اینکه شما یه تابع رو حلقه nبار فراخوانی میکنین، یه لیست (List<>) به عنوان آرگومان ورودی به تابع بدین و مقدار بازگشتی رو هم یه لیست بگیرین. هرچند متدهای سرویس در سیلورلایت هیچ وقت نمیتونن از نوع استاتیک باشند درنتیجه حتما ترد سیف هستند ولی ممکنه اون تابع تعداد تو اون حلقه تعداد خیلی زیاده نمونه بسازه و اگه چند تا کاربر همزمان این کار رو بکنن ممکنه سرویس دی داس بشه. کار خیلی خطرناکی میکنین.
اگه گویا نبود یا خواستین بفرمایین با مثال بیشتر توضیح بدم.
سلام .
بله لیست موردنظر رو به تابع فرستادم ، این روش خیلی بهینه تره .
چون خیلی با جزئیات نحوه عملکرد توابع async آشنا نیستم ، موارد نمونه سازی ورو خیلی نفهمیدم .سرویس دی داس بشه
این توابع از ورودی ها و خروجی ها یک نمونه می سازن و بهاشون کار می کنن ؟
اگه بیشتر توضیح بدین ممنون میشم .
سلام به همه
در مورد دی داس این مطلب رو بخونین واسه شروع خوبه
اما در مورد تابع و نمونه سازی و عملکرد.
دقت کنین که این تابع نیست که نمونه میسازه. ما اول هر فرم یه نمونه از کلاس سرویسمون میسازیم و این متدها داخل اون اینستنسی که ساختیمه! یه مقدار خوب درسهای شی گرایی رو مرور کنین تو ذهتون...
اگه یادتون باشه ما وقتی یه کلاس میسازیم داخل به جز پراپرتی می تونیم یه سری متدهایی هم برای انجام وظیفه بذاریم که هر وقت یه نمونه از اون کلاس ساخته بشه ، نمونه ساخته شده توانایی انجام اون متد رو هم داره مثلا فرض کنین یه کلاس بیبی داشته باشیم به شکل زیر:
public class Baby
{
public int Age { get; set; }
public string Name;
public Baby()
{
}
public void Cry()
{
// masalan
return;
}
}
حالا نمونه این کلاس توانمندی متد تعریف شده اش رو داره:
[CODE] Baby bb = new Baby();
bb.Cry();
[/CODE
با این تفاصیل می بینیم که سرویس هم یه کلاس مثل همین کلاس بچه ای که نوشتیم که متدها توشند. حالا ما می تونیم تو کلاس بی بی که نوشتیم هم رویداد داشته باشیم که وقتی بچه گریه کرد چه اتفاقی بیفته. میشه از اینترفیس استفاده کرد مثلا. تو سرویس هم همین طوره شما یه تابع رو که فراخوانی میکنین در اتمام فراخوانیش تو شکم کلاس سرویس نوشته شده که بعد از اتمام حالا رویداد اتمامش رو به دست بگیر.
والسلام
با سلام
لطفا بفرمایید در سیلورلایت برای نمایش داده های sql2000 از طریق دیتا گرید از چه راهی می تونیم استفاده کنیم.با توجه به اینکه در این مورد نمی تونیم کانکشن SQL server ایجاد کنیم،امکان استفاده از linq وجود تداره.من پست های قبلی رو هم دیدم، اما اونجا از دیتاست به عنوان سورس datagrid استفاده نشده و فقط خروجی inyt یا string از اون گرفته شده.
با تشکر
از مطللب بسیار مفید شما بینهایت سپاسگذارم.
از آقای تقوا جو سپاس گذاری می کنم.
همینطور از بچه ها به دلیل پرسیدن از ایشان نیز متشکرم.
متاسفانه به دلیل اینکه آقای تقوا جو از پاسخ دادن به سوالات حقیر امتناع میکنند لذا از بچه ها می خوام که در خصوص کار با دیتابیس از طریق SL بیشتر بپرسند.متشکرم.
سلام به همه
قضیه خروجی دادن به کنترل عین همونه! فرقش تو نوع خروجی متدی که نوشتینه!
مثلا وقتی متدی که شما تو سرویستون فقط یه رشته یا عدد صحیح برمیگردونه اگه تو مقدار e.result نگاه کنین متوجه میشین که اون هم یه رشته یا عدده!
خوب پس با این حساب کافیه که متدی که تعریف میکنین مقدار بازگشتیش یه لیست باشه مثلا:
[OperationContract]
public List<int> GiveList()
{
List<int> _result = new List<int>();
_result.Add(4);
_result.Add(8);
_result.Add(10);
_result.Add(24);
return _result;
}
تو سمت سیلور پس مقدار e.result ما هم میشه یه کالکشن که میشه بایند کرد به آیتم سورس دیتا گرید.
کافیه که تو رویداد اتمام تابعتون آیتم سورس رو به خروجی تابع بایند کنین یعنی:
uxDataGrid.ItemsSource = e.Result;
تصویر کمکی:
Untitled picture.png
با سلام خدمت همه دوستان
من Toolkit رو از لینک زیر دریافت کردم
http://silverlight.codeplex.com/releases/view/43528
اما حتی بعد از نصب هم هیچ چیز به نوار ابزار Tool اضافه نمیشه و وقتی سمپل ها رو اجرا میکنم بازم برنامه خطا داره که مربوط به رفرنس های این Toolkit است
باید عمل اضافه ای غیر از نصب کردم انجام بدم ؟
سلام به همه و مهدی عزیز
علی القائده نه صرف نصب کردن تولکیت کافیه! ولی حتما قبلش مطمئن باشین که سیلورلایت تولز نصب بوده باشه!
آیا ورژن سیلورلایت تولز و دولوپر و تولکیت و ویژوال استودیوت باهم همخونی دارند. من یه مورد از دوستان رو دیدم که این مشکل رو داشت!
خطایی که میده رو میشه بگین!
سلام .
ببخشید که سوالاتم زیاد شده..
با توجه به راهنمایی آقای xlord پست 117
من تونستم یک یوزرکنترل رو با استفاده از یک کانتینر و یک بردر روی یک یوزر کنترل دیگه نمایش بدم ، و با استفاده از(با توجه به اینکه برای نمایش یوزرکنترل زیرین از SilverlightLoader در صفحه aspx استفاده کردم ) توابع StaticMember و JS Script(که تابع StaticMember رو فراخوانی میکنه)تونستم مقداری رو از یوزرکنترل رویی به زیرین پاس بدم .http://forums.silverlight.net/forums...11/306970.aspx
اما حالا می خوام یوزرکنترل سوم رو روی دوتای قبلی نمایش بدم . با توجه به اینکه برای نمایش یوزرکنترل دوم از SilverLightLoader استفاده نکردم چطور می تونم مقداری رو از یوزرکنترل 3 به 2 انتقال بدم ؟
با استفاده ازapp = (App)App.Current;
هم خواستم پراپرتی ای رو به یوزرکنترل 2 بفرستم ولی چجوری بسته شدن یوزرکنترل 3 ( که همراه با حذف بردر و کانتینر آن است) رو در یوزرکنترل 2تشخیص بدم که بتونم از این پراپرتی استفاده کنم؟
امیدوارم تونسته باشم منظورم رو بفهمونم!
public List<int> GiveList()
{
List<int> _result = new List<int>();
_result.Add(4);
_result.Add(8);
_result.Add(10);
_result.Add(24);
return _result;
}
با سلام وتشکر
مشکل من اینه که دیتا تیبل رو که در واقع لیستی از سطرهاست چطور تعریف کنم؟! به صورت list<list<string>> هم تعریف کردم اما جواب نداد.لطفا راهنمایی بفرمایید.
سلام.
اگه درست فهمیده باشم..public List<int> GiveList()
{
List<int> _result = new List<int>();
_result.Add(4);
_result.Add(8);
_result.Add(10);
_result.Add(24);
return _result;
}
با سلام وتشکر
مشکل من اینه که دیتا تیبل رو که در واقع لیستی از سطرهاست چطور تعریف کنم؟! به صورت list<list<string>> هم تعریف کردم اما جواب نداد.لطفا راهنمایی بفرمایید.
شما می خواین این لیست رو به دیتاتیبل تبدیل کنین؟
در سیلورلایت دیتاتیبل و هش تیبل (دیگه بقیه اش رو نمی دونم) تعریف شده نیستن . می تونین یک کلاس Custom بسازین و لیست موردنظرتون رو از لیستی که دارید استخراج کنید و داخل لیستی از کلاس Custom بریزین.
سلام
ببینبد من یک سری اطلاعات رو از sql2000 توی یه دیتا تیبل ریختم و می خوام اون اطلاعات رو توی دیتاگرید نمایش بدم. باید ابتدا اون رو به لیست تبدیل کنم. چطور میشه این تبدیل رو انجام داد.البته اگه راه دیگه ای هم برای این کار هست بفرمایید.!
اول یه کلاس تعریف کن برای نگه داشتن داده هات ...
public class MyData
{
public int number1 { get; set; }
public string string1 { get; set; }
public string string2 { get; set; }
public string string3 { get; set; }
}
توی وب سرویس بعد از اینکه datatable ساخته شد ....
public List<MyData> GetData()
{
List<MyData> data = new List<MyData>();
DataTable dt = GetDataFromDAtaBAse();
foreach (DataRow item in dt.Rows)
{
data.Add(new MyData() {
number1 = Convert.ToInt32( item["number1Column"]),
string1 = item["string1Column"].ToString(),
string2 = item["string2Column"].ToString(),
string3 = item["string3Column"].ToString()
});
}
return data;
}
void sc_GetDataCompleted(object sender, ServiceReference1.GetDataCompletedEventArgs e)
{
dataGrid1.ItemsSource = e.Result;
}
سلام به همه
البته اگه بخواین بدون اینکه کلاس بسازین این کار رو انجام بدین، میتونین از یکی از توانمندیهای جدید دات نت فریم ورک چهار استفاده کنین به نام Tuple. یعنی یه لیست از تیوپل ها درست کنین. تیوپل کلاس جدیدیه که میشه آرایه ای از چند تایپ مختلف رو در خودش جا بده. مثلا Tuple<string, int>. حالا شما میتونین یه List از این تیوپل ها رو استفاده کنین
نمی دونم سوالم رو بد پرسیدم(پست 146)!!!!
برای ورود به یک یوزر کنترل از یک ی.زر کنترل دیگر در حالتیکه مانند مودالها صفحه زیر تاریک شود .
privatevoid btnNew_Click(object sender, RoutedEventArgs e)[LTR]
{
///اطلاعات مربوط به باز شدن فرم جدید
Grid grUsc = newGrid();
grUsc.Margin =
newThickness(10);
grUsc.Width = 1000;
Border b = newBorder();
b.Name =
"uscBorder";
b.Background =
newSolidColorBrush(Colors.Black);
b.Opacity = 0.6;
b.Height = 900;
USCNewCost usc = newUSCNewCost();
grUsc.Children.Add(usc);
LayoutRoot.Children.Add(b);
LayoutRoot.Children.Add(grUsc);
}
در یوزر کنترل دومتان یک گرید بعد از تعریف یوزر کنترل تعریف کنید مثل زیر
<Grid x:Name="LayoutRoot" Background="White" Height="455" Width="776" ShowGridLines="False">
منظور از LayoutRoot در بالا همین است
نوشته شده توسط emrooz با سلام وتشکر
مشکل من اینه که دیتا تیبل رو که در واقع لیستی از سطرهاست چطور تعریف کنم؟! به صورت list<list<string>> هم تعریف کردم اما جواب نداد.لطفا راهنمایی بفرمایید
............
در سیلورلایت دیتاتیبل نداریم برای این کار می توانید از سرویس ها استفاده کنید و با آبجکت ها و سرویس های ساخته شده در پروژه سیلورلایت
System.Collections.ObjectModel.Collection<SR_BLSto ck.Stock> lstStock = new System.Collections.ObjectModel.Collection<SR_BLSto ck.Stock>();
سلام مشکل من اینه که فرم لاگین من یک یوزر کنترل است و فرم اصلی که جاوا اسکریپتی منوش ساخته شده در یک فرم وب حالا اگه یوزر و پسورد کاربر صحیح وارد شده باشد من می خوام از یک یوزر کنترل به یک فرم وب برم که نمی دونم چی کار کنم قبلا صفحه استارت سیستم فرم وب بود ولی الان یوزر کنترل لاگینه ... نمی دونم خوب توضیح دادم یا نه
سلام به همه
در مجموع برای انتقال دیتا از سیلور به ای اس پی دات نت چند تا کار میشه انجام داد. نویگیت کردن به یک یو آر آی، فراخوانی یه هندلر، استفاده از یه وب سرویس، فراخوانی متد با جاوا اسکریپت.
بستگی داره به کاری که میخواین بکنین.
با سلام و تشكر به خاطر مطالب مفيدتون
من حدودا يك هفته است كه وارد محيط Silverlight شده ام به همين خاطر مبتدي هستم.
توي پروژه احتياج به يك Container دارم كه ساير فرمها، كه هركدام شامل كنترلهاي مخصوص به خودشون (مثل Grid,TextBox,...) هستند، روي آن Load بشن در حقيقت اين Container يك صفحه ثابت است. ولي نميدونم كه اينContainer رو چطوري تعريف كنم و همينجور ادامه كار.................
آخرین ویرایش به وسیله raaaaaz : یک شنبه 15 آبان 1390 در 16:20 عصر
سلام به همه
من روی سوال شما خوب متوجه نشدم. شما به راحتی این کار رو با یه گرید میتونین انجام بدین!
با سلام خدمت آقای تقواجو
یه مشکل که تو پروژه سیلور بیزینس دارم اینه که اگه دو تا جدول اگه با هم ارتباط داشته باشند دیگه رکورد اضافه نمی کنه داخل dataform
داخل برنامه اضافه می شه ولی داخل بانک نمی ره....!