View Full Version : سوال: نحوه حذف یک ردیف از گرید به صورت ظاهری فقط از گرید(حذف نشدن از بانک)
mrmohsen
جمعه 06 شهریور 1388, 18:25 عصر
با سلام خدمت دوستان
من یک گرید دارم که با نتایج جستجو پر شده حالا من با کمک و راهنمایی دوستان یک رکورد به صورت تصادفی انتخاب کردم حال میخوام این رکورد انتخاب شده از گرید حذف بشه که در اعمال بعدی تابع تصادفی احتمال انتخابش وجود نداشته باشه(اگر حذف نشه با اعمال تابع تصادفی دوباره ممکنه انتخاب بشه )یعنی حذف ظاهری از گرید نه از بانک از طرفی هم چون اطلاعات رکورد که از گرید میخوام حذف بشه در آینده نیاز دارم پس نباید از بانک حذف بشه
از دوستان در خواست راهنمایی دارم
m_d6712
جمعه 06 شهریور 1388, 22:12 عصر
یه ستون mode داخل جدول داخل دیتا بیس اضافه کن! اونایی که به ظاهر حذف میشن mode='deleted بشن!
اونایی بعد وقتی جستجو می کنی اینجوری انتخاب کن
Select * From table Where mode='deleted' order by NewID()
mrmohsen
جمعه 06 شهریور 1388, 22:32 عصر
یه ستون mode داخل جدول داخل دیتا بیس اضافه کن! اونایی که به ظاهر حذف میشن mode='deleted بشن!
اونایی بعد وقتی جستجو می کنی اینجوری انتخاب کن
Select * From table Where mode='deleted' order by NewID()
بازهم سپاس از جوابتون
آیا به نظر شما راهی دیگه ای هم به جز دیتابیس هست یعنی از امکانات گرید
alireza_s_84
شنبه 07 شهریور 1388, 01:30 صبح
سلام:
یک راهش اینطوریه
داده ها رو از دیتابیس استخراج کن و توی یک DataTable بریز. بعد یک متغیر ViewState تعریف کن تا Index سطرهایی که حذف میکنی رو نگه داره.
بعد Grid رو با DataTable پر کن(Bind Grid To DataTable)
هروقت خواستی یک سطر رو حذف کنی DataTable رو بر اساس شماره سطر فیلتر میکنی.
میتونی Grid رو Cash کنی تا اتصال به DataBase به حداقل برسه.
باز هم مشکلی خبرم کنید راهنمایی کنم
موفق باشید
alireza_s_84@yahoo.com
Alireza Orumand
شنبه 07 شهریور 1388, 08:42 صبح
سلام
بازهم سپاس از جوابتون
آیا به نظر شما راهی دیگه ای هم به جز دیتابیس هست یعنی از امکانات گرید
خیر. برای کاری که شما نیاز به اون دارید راه دیگه ای وجود ندارد. شما دفعات مختلفی داده ها رو از دیتابیس میخونید. اگر از روشی که دوستمون گفتن استفاده نکنید، دفعه بعدی که داده ها رو از بانک میخونید با چه اصلی میخواهید تشخیص دهید کدام یک از سطر ها منطقا حذف شده میباشند؟
بهترین جای نگه داری حذف منطقی خود رکورد میباشد.
روشی که alireza_s_84 (http://barnamenevis.org/forum/member.php?u=35861) فرمودن تا زمانی جوابگوی کار شما است که از دیتابیس داده ها رو مجددا بارگذاری نکنید و از cache استفاده کنید. ولی با اولین مراجعه به دیتابیس همه چیز از بین میره.
البته متونید شماره رکورد هایی که منطقا حذف شده اند رد جای دیگه مثلا یک فایل نگه داری کنید، اما این کار در مقایسه با روش نگه داری همراه خود رکورد اصلا روش مناسبی نیست.
موفق باشید.
Ahmadgolagha
شنبه 07 شهریور 1388, 15:17 عصر
فیلد به صورت منطقی نه فیزیکی از خود دیتابیس حذف کن
مثلا یه فیلد deleted اضافه کن و وقتی خواستی رکوردی را حدف کنی بجای دستور delete از دستور update استفاده کن و مثلا مقدار صفر فیلد رو یک کن (بذار به طور پیش فرض مقدار صفر بگیره - از فیلد بیتی هم می تونی استفاده کنی )
بعد که خواستی تو دیتاگرید لود کنی آخر دستور select یه شرط اضافه کن که فیلدهای منطقا حذف شدن نمایش داده نشن
select * from Table Where Deleted = 0
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.