نمایش نتایج 1 تا 9 از 9

نام تاپیک: رفرش نشدن DATAGRID بعد از UPDATE

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    Question رفرش نشدن DATAGRID بعد از UPDATE

    سلام.
    من دیتاگرید رو بعد از UPDAte کرد ، itemsource اون رو تغییر می دم تا رفرش بشه اما متاسفانه رفرش نمیشه.
    در ایجاد کردن و حذف کردن از همین روش استفاده می کنم کار می کنه اما در update کار نمی کنه.
    datagrid.items.refresh() رو هم استفاده کردم اما باز هم درست نشد.

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    اين كاري كه شما انجام ميدين صحيح نيست
    نبايد ItemsSource رو هر دفعه ست كنين! اينجوري كل رديف هاي ديتاگريد هر دفعه رندر ميشن و اگه تعداد بالا باشه پرفورمنس مياد پايين.

    class اي كه ساختي بايد INotifyPropertyChanged رو پياده سازي كنه و براي Property هايي كه آپديت ميشن بايد هنگام تغيير، ايونت PropertyChanged فاير بشه.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    ممنون. اگه امکان داره نمونه کد بدین ممنون میشم.

  4. #4

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    منم همین مشکل رو دارم

    تازه هم با این mvvm آشنا شدم. هیچی ازش نمیفهمم.
    میشه نمونه کد بزارید؟

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    نقل قول نوشته شده توسط سیدسبحان مشاهده تاپیک
    منم همین مشکل رو دارم

    تازه هم با این mvvm آشنا شدم. هیچی ازش نمیفهمم.
    میشه نمونه کد بزارید؟

    http://danrigby.com/2012/01/08/inoti...hejlsberg-way/

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    نقل قول نوشته شده توسط elec60 مشاهده تاپیک

    ممنون از شما

  7. #7

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    نقل قول نوشته شده توسط elec60 مشاهده تاپیک
    اين كاري كه شما انجام ميدين صحيح نيست
    نبايد ItemsSource رو هر دفعه ست كنين! اينجوري كل رديف هاي ديتاگريد هر دفعه رندر ميشن و اگه تعداد بالا باشه پرفورمنس مياد پايين.

    class اي كه ساختي بايد INotifyPropertyChanged رو پياده سازي كنه و براي Property هايي كه آپديت ميشن بايد هنگام تغيير، ايونت PropertyChanged فاير بشه.
    سلام. ممنون میشم نمونه کدی قرار بدید

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    نقل قول نوشته شده توسط Mori Bone مشاهده تاپیک
    سلام. ممنون میشم نمونه کدی قرار بدید
    فرض کنيد کلاس Person رو داريم که خاصيت های Id و Name داره و يه ليست از نمونه های Person ساختيم و ItemsSource یه DataGrid رو برابر اين ليست قرار داديم. در اين صورت Datagrid رکوردهای موجود رو نمايش ميده. اما اگه مثلا Name يکی از اين Person ها رو تغيير بديم DataGrid اين تغيير رو متوجه نميشه و نمايش نميده(مقدار قبلی رو نمايش ميده) که طبيعی هم هست. چون DataGrid بدبخت از کجا ميخواد بفهمه که ويرايشی صورت گرفته(نميتونه که دايم چک کنه ببينه ويرايش داريم يا نه!) اما اگه خود Person ای که ويرايش ميشه به DataGrid خبر یده که من ويرايش شدم DataGrid هم تغييرات رو دريافت ميکنه و تو نمايش لحاظ ميکنه. برای اينکه کلاس Person اين قابليت رو داشته باشه که وقتی ويرايش شد خبر بده بايد interface ای به اسم INotifyPropertyChanged رو پياده سازی کنه و داريم:
    class Person : INotifyPropertyChanged{
    public event PropertyChangedEventHandler PropertyChanged;
    public int Id { get; set; }
    private string _name;
    public string Name
    {
    get
    {
    return _name;
    }
    set
    {
    if (value != _name)
    {
    var PC = PropertyChanged;
    if (PC != null)
    PC(
    this, new PropertyChangedEventArgs(nameof(Name)));

    }
    }
    }
    }
    آخرین ویرایش به وسیله elec60 : یک شنبه 17 آبان 1394 در 19:39 عصر

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: رفرش نشدن DATAGRID بعد از UPDATE

    تو قسمت set مربوط به خاصيت Name از کلمه کليدی nameof استفاده کرديم که تو C#‎‎‎‎6.0 معرفی شده. اين کلمه کليدی اسم خاصيت Name رو بر میگردونه!

    بجای
    PC(
    this, new PropertyChangedEventArgs(nameof(Name)));

    میشه از
    PC(this, new PropertyChangedEventArgs(nameof("Name")));


    هم استفاده کرد. اما بهتره از عملگر nameof استفاده کنيم چون ممکنه اسم رو به صورت استرينگ اشتباه بنويسيم و دليل محکمتر اينکه اگه در آينده بخواييم refactoring انجام بديم با nameof کارمون خيلی ساده تر ميشه و نيازی نيست که اسم رو به صورت استرينگی، دستی تغيير بديم. کلا با رشته ها امکان ديباگ در زمان کامپايل رو از دست ميديم.

    البته از Attribute ای به اسم [CallerMemberName]
    هم که تو C#‎‎5.0 معرفی شده ميشه استفاده کرد اما اين صفت و يا Attribute در runtime اسم فيلد رو برمی گردونه ولی nameof در compile time



تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: شنبه 22 دی 1386, 08:43 صبح
  2. مشکل عملیات TSearchFind حتی بعد از Update شماره 2 رفع نشده ؟
    نوشته شده توسط Pichidehtarin در بخش برنامه نویسی در Delphi Prism
    پاسخ: 0
    آخرین پست: دوشنبه 14 اردیبهشت 1383, 15:52 عصر
  3. ذخیره نشدن اطلاعات بعد از post کردن آن
    نوشته شده توسط tazekar در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 17
    آخرین پست: دوشنبه 21 مهر 1382, 04:49 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •