PDA

View Full Version : سوال: نشان دادن یک یا چند رکورد به صورت Read و Unread شده در دیتاگرید



reza1699
شنبه 07 دی 1392, 20:18 عصر
چطور میتونم یک رکورد رو در دیتاگرید به صورت رید و آنرید نشون بدم؟
یعنی مثلا رکوردی که خوانده نشده و روش کلیک نشده رو با یک فونت بولد نشون بده و وقتی روش رفتن برای اولین بار ، دیگه از اون حالت بیرون بیاد!

آیا مثالی برای این طرح وجود داره؟
این طرح برای طراحی یک کارتابل و ارجاع نامه ها هست.

NasimBamdad
شنبه 07 دی 1392, 21:58 عصر
چه روش خوبی ، منم دنبال این روش هستم

مثل Email در Gmail , yahoo و ...

reza1699
یک شنبه 08 دی 1392, 09:12 صبح
والا این روش به ذهنم رسیده ! ولی نمیدونم چطور میتونم اجراش کنم !
به نظرم باید یک فیلد در دیتا بیس در نظر گرفت از نوع بیت برای این کار و بعد با توجه به صفر یا یک بودن اون این کارو انجام داد

hamid_0341
یک شنبه 08 دی 1392, 11:06 صبح
همان جور که خودت گفتی میتونی از یک فیلد Bit توی دیتابیست استفاده کنی و موقع اضافه کردن اطلاعات به دیتابیس انرا False قرار بدی و وقتی که اطلاعات خوانده شد(مثلا توی فرم ، توی Onload فرم اون فیلد رو ویرایش کن و true کن مقدارشو

reza1699
پنج شنبه 19 دی 1392, 09:32 صبح
همان جور که خودت گفتی میتونی از یک فیلد Bit توی دیتابیست استفاده کنی و موقع اضافه کردن اطلاعات به دیتابیس انرا False قرار بدی و وقتی که اطلاعات خوانده شد(مثلا توی فرم ، توی Onload فرم اون فیلد رو ویرایش کن و true کن مقدارشو

میشه بگید چطور خونده شدن یک رکورد در دیتاگرید رو تشخیص بدم؟یعنی با چه دستوری؟یا در چه ایونتی؟
شما فرض کنید که میخوام وقتی روی یک رکورد رفتم در دیتا گرید ، اون رکورد رنگ و فونتش عوض بشه !
چیکار باید بکنم؟

goldoon
پنج شنبه 19 دی 1392, 09:59 صبح
میشه بگید چطور خونده شدن یک رکورد در دیتاگرید رو تشخیص بدم؟یعنی با چه دستوری؟یا در چه ایونتی؟
شما فرض کنید که میخوام وقتی روی یک رکورد رفتم در دیتا گرید ، اون رکورد رنگ و فونتش عوض بشه !
چیکار باید بکنم؟
اگر میخای با کلیک روی هر ردیف از دیتاگراید اون ردیف به عنوان خونده شده در نظر گرفته بشه توی رویداد کلیک دیتاگراید یک کد بنویس که اگر مقدار اون بیت false هست اون را true کنه
هنگام پرکردن فرمت هم با یک دستور foreach برای تمامی ردیف های فرمت چک کن که اگر مقدار بیتشون true شده مثلا بکگراند اون ردیف را تغییر بده

goldoon
پنج شنبه 19 دی 1392, 10:02 صبح
راستی یادم رفت بگم مثلا فرض میگیریم اسم اون فیلدمون هست xread
حالا توی دیتاگراید یک فیلد با همین اسم ایجاد کن و فقط visible اون را false کن
حالا برا هر ردیف ستون xread را چک کن اگه true بود نتیجه میگیریم که اون ردیف خونده شده
متوجه شدی؟

shahryari
پنج شنبه 19 دی 1392, 11:32 صبح
ابتدا یک فیلد ازنوع bit با نام مثلا Isread ایجاد کنید برای هر رکورد جدید مقدارش برابر 0 باشد
وقتی روی ردیفی از دیتا گرید کلیک میکنید ، در رویداد سل کلیک ، میتوانید ایندکس ردیف مورد نظر را بگیرید
و بعد از خواند متن مقدار Isread برابر 1 باشدان
برای رفرش شدن پیام های خوانده شده هم باید با حلقه ردیف ها را پیمایش کنید هر ردیفی که Isread آن برابر 1 است ، رنگ آن ردیف تغییر کند

پ ن :
حتما باید ستونهای دیتا گرید غیر قابل سورت باشد ، اگر کابر بتواند با کلیک روی هدر ستونها ، مقادیر را سورت کند ، رنگ ها و خوانده شده ها بهم میخورد (تجربه شخصی)

goldoon
پنج شنبه 19 دی 1392, 11:42 صبح
ا

پ ن :
حتما باید ستونهای دیتا گرید غیر قابل سورت باشد ، اگر کابر بتواند با کلیک روی هدر ستونها ، مقادیر را سورت کند ، رنگ ها و خوانده شده ها بهم میخورد (تجربه شخصی)
برای رفع این مشکل میشه در رویداد dataGridView_Sorted باید همون تابع که حاوی حلقه بود را دوباره صدا بزنید مشکل حل میشه
(اینم تجربه شخصیم)

reza1699
جمعه 20 دی 1392, 03:23 صبح
ممنون از کمکتون ! باید اجرا کنم ببینم چی میشه !
ای کاش میتونستید یه نمونه کوچیک برام بنویسید !!!!! البته اگه زحمتی نیست

reza1699
دوشنبه 21 بهمن 1392, 09:16 صبح
میشه قطعه کد فور ایچ دیتاگرید رو که تغییر رنگ رو ایجاد میکنه برام بنویسید؟با شرط هاش روی یک فیلد !