دسته بندی ها
12:17 1399/08/26

بروزرسانی اطلاعات در DataGridView بدون کویری مجدد

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : WPF سی شارپ Sql Server Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5538
هوش مصنوعی

پاسخ هوش مصنوعی

برای بروزرسانی اطلاعات در DataGridView بدون انجام یک کویری مجدد، می توانید از روش زیر استفاده کنید:

به جای بارگذاری مجدد تمامی داده ها، می توانید تنها رکورد خاصی را که می خواهید بروزرسانی کنید، ویرایش کنید و سپس آن را در DataGrid به روز کنید. به این ترتیب، می توانید با حداقل تغییرات فقط رکوردی را که نیاز به بروزرسانی دارد تغییر دهید.

در اینجا یک مثال آورده شده است:


private void UpdateRow(int id, string newName, string newTel)
{
    // پیدا کردن رکوردی که باید به روز شود
    var rowToUpdate = dbms.MYTABLE.Find(id);
    if (rowToUpdate != null)
    {
        rowToUpdate.NAME = newName;
        rowToUpdate.TEL = newTel;

        // ذخیره تغییرات در دیتابیس
        dbms.SaveChanges();

        // به روز رسانی رکورد در DataGrid بدون بارگزاری مجدد
        var dataGridItem = DataGrid1.ItemsSource.Cast().FirstOrDefault(x => x.CODE == id);
        if (dataGridItem != null)
        {
            dataGridItem.NAME = newName;
            dataGridItem.TEL = newTel;
        }

        // اطمینان حاصل کردن از اینکه DataGrid به روز شده است
        DataGrid1.Items.Refresh();
    }
}

در این کد:

  • ابتدا رکورد مورد نظر را با استفاده از Find پیدا می کنید.
  • سپس ویژگی های رکورد را به روز می کنید و تغییرات را در دیتابیس ذخیره می کنید.
  • بعد از آن، رکورد به روز شده را در DataGrid بدون بارگذاری مجدد پیدا کرده و اطلاعات آن را نیز به روز می کنید.
  • در نهایت با فراخوانی DataGrid1.Items.Refresh()، تغییرات در DataGrid نمایش داده می شوند.

با این رویکرد، می توانید فقط رکوردهای مورد نیاز را به روز کرده و از جابه جایی ردیف ها جلوگیری کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 21:34 1399/08/26

شما نمیتونید اطلاعات رو داخل DataGridView ذخیره کنید و برای رفرش اطلاعات باید حتما یک بار مجدد اطلاعات رو از دیتابیس فراخوانی کنید. ولی معمولا نیازی نیست شما همه اطلاعات رو از دیتابیس واکشی کنید.

مطمئنا اگر شما 10 هزار یا 100 هزار رکورد داخل دیتابیس خودتون داشته باشید واکشی و نمایش این حجم از اطلاعات قدری باعث کند شدن برنامه شما میشه.

من خودم معمولا بیشتر از 1000 تا رکورد رو واکشی نمیکنم. و اگر کاربر نیاز به اطلاعاتی داشت میتونه با استفاده از قابلیت جستجو که قرار میدم اطلاعات مورد نیازش رو پیدا کنه.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
3 نظر
mojtabahakimian : یه مسئله دیگه اینکه دوباره کوئری بزنیم ترتیب اطلاعات در دیتا گرید بهم میخوره مثلا ریدیفی که ماانتخاب کرده بودیم یا ماوسمون روش بوده بهم میخوره

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 10:02 1399/08/26
mojtabahakimian : ممنون ولی ابزار های دیگه مثل MS ACCESS خودشون یه چیزی دارن مثل رفرش ReQuery که سرعتش بالاست و فقط کافیه فراخوانی کنید ویژوال استدیو یا سی اشرپ هچین چیزی نداره !!!!!!!!!!

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 09:57 1399/08/26
hamid_b : دوست عزیز شما به راحتی میتونید سرچ رو انجام بدید و اطلاعاتی هم که برای سرچ وارد شده حذف نمیشه. وب نیست که بخواد صفحه رفرش بشه. یه تست کنید متوجه میشید. توی هیچ برنامه ای نیاز نیست هزاران رکورد رو از دیتابیس بخونید و نمایش بدید. نهایت 100 تا رکورد رو بیارید و اگر کاربر چیزی خواست قابلیت سرچ بهش بدید. اطلاعات هم بعد از سرچ پاک نمیشه.

امتیاز کاربر : 518   رتبه کاربر : 4   تاریخ ثبت : 06:00 1399/08/27
ادامه نظرات ...
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود