PDA

View Full Version : ارتباط بین کنترل ها و پایگاه داده



zeous1
سه شنبه 16 خرداد 1391, 20:53 عصر
سلام دوستان سوالمو توی قسمت wpf مطرح کردم ولی جوابی نگرفتم!
میخوام داده های پایگاه داده مو به کنترل textblock , imagebox ارتباط بدم به طوری که در هنگام لود شدن صفحه م اطلاعاتی مثل عکس و نام ذخیره شده در پایگاه داده نمایش داده بشن
توی این برنامه صفحه ای دارم که تعدادی imagebox و textblock روش قرار داره تا نام فرد بعلاوه عکسش رو به کاربر نمایش بده، پایگاه داده ممکنه داده های بسیار زیادی داشته باشه که میخوام اطلاعاتش رو صفحه به صفحه با زدن دکمه ی next به کاربر نمایش بده
نامگذاریها رو هم به این ترتیب انجام دادم که نام اشخاص PersonName_1, ... , PersonName_20 و همچنین عکسشون PersonImage_1, ... , PersonImage_20
که PersonName_1 و PersonImage_1 در یک گرید قرار دارند و به هم مرتبط اند بقیه هم به همین صورت 1با 1، 2 با 2 و ...

یه راه حل واسه این موضوع میخوام، ممنون میشم راهنماییم کنید

zeous1
چهارشنبه 17 خرداد 1391, 20:21 عصر
از یه راه تونستم این کارو بکنم، میزارم اینجا اگه کس دیگه خواست بتونه ازش استفاده کنه! ولی اگه کسی راه بهتر بلده راهنماییم کنه

try{





IQueryable<string> query = from row in db.Person_tables





select row.FirstName;

int counter = 0;
foreach (string str in query)
{
(FindName(


"PersonName_" + counter.ToString()) asTextBlock).Text = str;
counter++;
}




IQueryable<string> query1 = from row in db.Person_tables



select row.IdentityCode;
counter = 0;



foreach (string str in query1)
{



FileStream fs = newFileStream(مسیری که برای عکسای مشخص کردم + str + ".jpg", FileMode.Open, FileAccess.Read);



byte[] data = newbyte[fs.Length];

fs.Read(data, 0, System.



Convert.ToInt32(fs.Length));

fs.Close();



ImageSourceConverter imgs = newImageSourceConverter();
(FindName(


"PersonImage_" + counter.ToString()) asImage).SetValue(Image.SourceProperty, imgs.ConvertFromString(مسیری که برای عکسها مشخص کردم + str +".jpg"));
counter++;
}

}


catch (Exception ex)
{

MessageBox.Show(ex.Message, "Error");
}

تابع
(نام تکست بلاک که داری به صورت رشته وارد میکنی)asTextBlock
این تابع رشته ای که داخل پرانتز نوشتی رو به عنوان تکست بلاک (اگه تکست بلاکی با این اسم وجود داشته باشه) در نظر میگیره و میتونی مثل اینکه نام تکست باکس رو به صورت عادی وارد کردی با گذاشتن دات یا نقطه به تموم محتویاتش دسترسی داشته باشی، منم از همین خصوصیتش استفاده کردم




چون نام اشخاص رو به صورت PersonName_0 , PersonName_1 و ... انتخاب کردم یه counter تعریف کردم که از 0 شروع به شمردن کنه تا بتونم ازش برای دسترسی به محتویات داخل تکست بلاکام ازش استفاده کنم (با همون تابع که از as textblock استفاده میکردیم)