PDA

View Full Version : استفاده از Value Conveter



PetekDincos
شنبه 09 بهمن 1389, 20:36 عصر
با سلام
من سه تا جدول دارم که مقادیر کلید اصلی دو جدول اول و دوم رو در جدول سوم ذخیره کردم و هنگام نمایش جدول سوم برای اینکه از دو جدول اولی نیز بتونم فیلدهای مشخصی رو نشون بدم از Value Convert استفاده می کنم و جواب هم می ده و فقط یه مشکلی که هست اینه که در متد Convert کلاسی که برای Convert ایجاد کردم برای هر رکورد جدول سوم یک بار مقادیر جدول های اول و دوم را برای یافتن رکوردی که کلید اصلیش با کلید ذخیره شده در جدول سوم یکی باشه واکشی می شوند و آیا این راه درستیه ؟ با تشکر

مهدی فرزاد
شنبه 09 بهمن 1389, 22:23 عصر
سلام

در مورد درست یا غلط بودن نظری ندارم ولی این راه رو پیشنهاد میدم
شما میتونید یک ویو در خود دیتابیس درست کنید که این کار رو انجام بده
یا
با خود دستورات Linq to sql هم میتونی جدول ها رو Join کنی

PetekDincos
شنبه 09 بهمن 1389, 22:48 عصر
با سلام مجدد
می شه از Join استفاده کرد اما در موقع Join سه تا جدول Select ای که می گیری از نوع Anonymous Type (درست نوشته باشم) است اما من به نوع خود جدول نیاز دارم مثلا یه جدول به نام Table1 در زمان نگاشت به یک ORM یک کلاس از نوع Table1 ایجاد می کنه که من به این نوع نیاز دارم چون در جاهای دیگه استفاده می کنم با تشکر

رضا عربلو
یک شنبه 10 بهمن 1389, 09:08 صبح
<GridViewColumn Header="000" DisplayMemberBinding="{Binding Path=FieldIntable3.Table1Name.FieldInTable1}"/>
کارت را راه نمي اندازد؟

PetekDincos
یک شنبه 10 بهمن 1389, 17:48 عصر
<GridViewColumn Header="000" DisplayMemberBinding="{Binding Path=FieldIntable3.Table1Name.FieldInTable1}"/>
کارت را راه نمي اندازد؟

با سلام
نه اینطوری جواب نداد اگه منظور شما رو متوجه شده باشم FieldIntable3 کلید خارجی از Table1 است که در table3 ذخیره شده اگه اینطوری باشه جواب نداد و آیا راهی نیست که در موقع استفاده از Join کوئری که می گیریم از نوع نامشخص نباشه با تشکر

مهدی فرزاد
یک شنبه 10 بهمن 1389, 18:44 عصر
سلام
اگه میشه بگید چرا اون کوئری رو در جای دیگه استفاده میکنید و به نوعش نیاز دارید؟!!!
میتونیدبرای این یک کوئری جدا بنویسید و برای جای دیگه از برنامه یک کوئری دیگه

PetekDincos
یک شنبه 10 بهمن 1389, 19:52 عصر
با سلام
من Table03 را در یک ListView نشون می دم و هنگام انتخاب هر سطر از ListView می خوام اطلاعات مرتبط با این سطر در جدول های Table01,Table02 را بعضی از فیلدهاش را در یک TextBlock کنار ListView نشون بدم و میخوام نوع سطرهای ListView مشخص باشد چون در هنگام SelectionChange لیست ویو از کد زیر استفاده می کنم



private void ListView_SelectionChanged(object sender,)
{
Table03 SelectedRow=(Table03)(sender as ListView).SelectedItem);
}


و به این SelectedRow که از نوع Table03 است در همین صفحه نیاز ذارم با تشکر

مهدی فرزاد
یک شنبه 10 بهمن 1389, 23:25 عصر
سلام
خوب بهتر نیست از خاصیت SelectedValue استفاده کنید؟؟ میتونید مثلا مقدار فیلد کلیدی Table3 رو بدید SelectedValuePath="ID
و بعد در کوئری استفاده کنید

private void ListView_SelectionChanged(object sender,)
{
var q = from a in db.Tabale2
where a.Table3ID == (int)ListView.SelevtedValue
select a;
}

اینجوری نیازی نیست از اون نوع خاص جدول کوئری داشته باشی و میتونید Jion رو انجام بدید

PetekDincos
دوشنبه 11 بهمن 1389, 00:34 صبح
با سلام
آره درسته این کار رو هم می شه کرد و از این طریق از Join هم می شه استفاده کرد فقط تو این روش بهتره کل جدول Table03 در یک IEnumerable یکبار در ابتدای لود صفحه قرار بگیره و بعد در این IEnumerable شرط اعمال بشه با تشکر آقای مهدی فرزاد

رضا عربلو
دوشنبه 11 بهمن 1389, 13:48 عصر
معذرت می خوام.
اگر شما از ابزار ORM استفاده کرده باشید. هر رکورد شما در یک جدول بایستی لینکی به جدول foregin key شما داشته باشد. بنابراین


<GridViewColumn Header="000" DisplayMemberBinding="{Binding Path=Table1Name.FieldInTable1}"/>