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

نام تاپیک: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

  1. #1

    بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    با سلام
    برای مبحث dataBinding در ویندوزم فرم از bindingsource استفاده میکردیم
    ولی در wpf فرق میکنه
    سرچ کردم و رسیدم به observablecollection
    ولی هر کاری کردم نتونستم ازش استفاده کنم
    حالا میخوام وقتی ی رکورد از جدول حذف میشه یا بهش اضافه میشه و ویرایش میشه دیتاگرید هم بروز بشه

  2. #2

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    پراپرتی Local از Entity مورد نظر ، از نوع ObservableCollection<Entity> خواهد بود.(قبلا در بخش C#‎‎‎‎‎‎‎‎‎‎‎‎‎ و با bindingsource مثال زدم براتون)
    در ساده ترین حالت کافیه داده های مورد نظر را Load کرده و از طریق ItemsSource و یا DataContext در کنترل مورد نظر نمایش بدید. در هنگام حذف ، اضافه و آپدیت کافیست از طریق Local عمل کنید. تغییرات در کنترل هم اعمال خواهند شد.

    اگر هم نیاز به نمایش برخی از رکوردها دارید، میتونید رکوردهای مورد نظر رو قبل از متد Load با شرط مناسب انتخاب کنید.
    و یا
    میتونید یک ObservableCollection ایجاد کنید. در اینصورت برای اعمال تغییرات در context باید از رویداد CollectionChanged استفاده کنید.
    http://blogs.u2u.be/diederik/post/20...-DataGrid.aspx


    ویدئو زیر رو هم ببینید بد نیست
    https://msdn.microsoft.com/en-us/data/ff806174.aspx


    اگر کد بزارید ، میشه روی همون کد راهنمایی کرد.
    آخرین ویرایش به وسیله Mahmoud.Afrad : سه شنبه 11 آبان 1395 در 16:48 عصر

  3. #3
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    روش بایندینگ در wpf بدین صورته که باید کلاستون رو تزیین کنید و کمی اونها رو تغییر بدید یجوری هوشمندش کنید
    ایترفیس استاندارد INotifyPropertyChanged برای همین کار هست در فضای نام System.ComponentModel بهش دسترسی داریم
    فرض کنیم کلاسی داریم بنام Person با دو فیلدهای نام و نام خانوادگی



    public class Person : INotifyPropertyChanged
    {
    private string _firstName;
    private string _lastName;
    public string FirstName
    {
    set
    {
    _firstName = value;
    if (PropertyChanged == null) return;
    onPropertyChanged("FirstName");
    }
    get { return _firstName; }
    }
    public string LastName
    {
    set
    {
    _lastName = value;
    if (PropertyChanged == null) return;
    onPropertyChanged("LastName");
    }
    get { return _lastName; }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void onPropertyChanged(string propertyName)
    {
    if (PropertyChanged == null) return;
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

    }

    به محض ارث بری از INotifyPropertyChanged یک event و متد PropertyChangedEventHandler برای هوشمند کردن پروپرتیهای کلاسمون پیاده سازی میشه که باید کمی تغییرات مثل مثال بالا درونش بدیم

    خب برای اینکه بخایم یک لیست از کلاس person بسازیم کافیه توی کد برنامه یا( اگر پترن MMVM استفاده میکنید در یک ViewModel) یک Prop از نوع جنریک ObservableCollection میسازیم

    private ObservableCollection<Person> _personss;

    public ObservableCollection<Person> Persons
    {
    get { return _personss; }
    set
    {
    if (_personss!= value)
    {
    _personss= value;
    onPropertyChanged("persons");
    }
    }
    }

    دقت کنید لیست جنریک هم با onPropertyChanged در قسمت set پراپرتی هوشمند شده البته میتونید یک پراپرتی ساده هم بسازید

    public ObservableCollection<Person>Persons{get;set;}

    ولی این کار باعث میشه که وقتی لیست Persons هوشمند نیاشه و باید بعد از پر کردن لیست یک دستور دیگه بنویسیم
    در این کلاستون هم فراموش نکنید که از اینترفیس INotifyPropertyChanged ارث بری بشه و پیاده سازی بشه
    حالا کافیه در یک متد یا در سازنده کلاس این لیست مقدار دهی بشه

    public class PerdonViewModel : INotifyPropertyChanged
    {
    private ObservableCollection<Person> _personss;
    public ObservableCollection<Person> Persons
    {
    get { return _personss; }
    set
    {
    if (_personss!= value)
    {
    _personss= value;
    onPropertyChanged("persons");
    }
    }
    }


    public PersonViewModel()
    {
    people = new ObservableCollection<Persons>
    {
    new Person { FirstName = "ali", LastName = "ebrahimi" },
    new Person { FirstName = "reza", LastName = "rezaii" },
    new Person { FirstName = "Amir", LastName = "ebrahimi" },
    };
    }


    حالا این لیست رو میتونید در قسمت xaml بایند کنید به یک گراید

  4. #4

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    جناب Mahmoud.Afrad بنا به جلمه راپرتی Local از Entity مورد نظر ، از نوع ObservableCollection<Entity> خواهد بود راستش نتونستم استفاده کنم به چه شکل هستش؟

    جناب ali_md110 نمیشه این کار ها در xaml انجام داد ؟
    چون من ستون هام را به این شکل bind کردم

    <DataGridTextColumn Header="کد " Width="70" Binding="{ Binding ID}">

  5. #5
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    روشتون درسته بایندینگ همینجوره

    ولی خاصیت ItemSource گراید رو ست کنید به لیست persons و دیتاکانتکست فرم رو هم برابر با PerdonViewModel قرار بدید

  6. #6

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    ممنون
    ولی من لیست ندارم میشه بگید برای ست کردن به یک جدول چکار کنم؟

  7. #7
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    یک مثال mvvm قبلا فرستاده بودم برا یکی از دوستان
    نگاش کنید راهنمایی میکنه اگر سوال داشتید بپرسید راهنمایی کنم
    فایل های ضمیمه فایل های ضمیمه

  8. #8

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    این فقط ی لیست را لود میکنه
    درج نداره که؟
    حالا که بحث mvvm را اوردید وسط میشه بگید فرقش با برنامه نویسی سه لایه چیه؟

  9. #9
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    اعمال درج و ویرایش و حذف هم خیلی راحته
    این مثال فرستادم جهت آشنایی با روش MVVM و بایندینگ
    این بحث لایه بندی و سه لایه بودن رو از ذهنتون بیرون کنید
    ممکنه توی یک برنامه نیاز به 5 لایه باشه که هممگی دست به دست هم میدن و با برنامه اضلی اطلاعات ردوبدل میکنند
    مبحث سه لایه بودن و اینکه یک لایه وظیفه دسترسی داده و دیگری وظیفه ولیدیشن و لایه سوم لایه دسترسی داشته باشه همگی جمع شدند در MVVM
    وقتی روی یک پروژه گزوهی کار میکنید ممکنه یک نفر فقط طراحی برنامه رو انجام بده و یکی دیگه کد نویسی
    خب mvvm میاد کد نویسی رو از طراحی جدا میکنه و Code behiend دیگه وجود نداره و کدهای برنامه انتقال داده میشه به یک لایه دیگه
    و یک لایه دیگه هم مثلا بنام DataAccess میشه لایه دیتا و یا همون EF
    شما میتونید کدهای درج و ویرایش یا همون CRUD رو انتقال بدید به یک لایه مجزا بنام SERVICE LAYER
    و لایه ViewModel بیاد از این سرویسها استفاده بکنه و در اختیار لایه UI قرار بده در واقع بخش فرماندهی برنامه میشه ViewModel
    از یک لایه دیگه هم میتونید در این الگو برای ترزیق وابستگیهای برنامه استفاده کنید مبحث Dependency injection مطالعه کنید

    نظر من اینه اگر میخاید بهتر برنامه بنویسید و پیشرفته تر کمی از سنتی برنامه نویسی کردن جدا بشید و الگوهای شیرین و جذابMVC یا MVVM رو انتخاب کنید

  10. #10

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    ممنون ولی حالا mvc فرقش چیه با mvvm

  11. #11
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    ممنون ولی حالا mvc فرقش چیه با mvvm
    mvvm و mvc هر دو الگوهایی هستند که شبیه هم هستند mvc تحت وب کاربرد داره ولی mvvm هم وب و هم ویندوزی
    تفاوتشون توی حرف C در Mvc و VM در MVVM مشخص میشه
    Mمخفف model هست در هر دو الگو یعنی کلاسی که حاوی کلاسهای ef هستند
    v مخفف view در هر دو الگو هست یا همون رابط کاربری که میتونه یک صفحه وب باشه یا فرم wpf
    vm توی mvvm یعنی viewmodel همونجایی که کدهای برنامه نوشته میشن و با سیم کشی هایی که انجام میدیم( منظورم Binding هست ) فیلدها یا لیست ها به کنترلهای فرم وصل میکنیم

    و c توی mvc میشه Controllerکه معادل viewmodel هست ولی با روشی متفاوت تر اطلاعات رو به سمت ویو ارسال یا از اون دریافت می کنه

    خیلی سخت نگیرین این الگوهها خیلی ساده هستند و در عین سادگی سرعت برنامه نویسی شما رو چند برابر میکنند
    همچنین نگهداری و توسعه برنامه در آینده خیلی بهتر میشه

  12. #12
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: بروز رسانی دیتاگرید بعد اعمال حذف،درج و ویرایش


    public void SelectAll()
    {


    OleDbConnection con = new OleDbConnection(strconnection);
    OleDbCommand com = new OleDbCommand("SELECT * FROM tbname", con);
    OleDbDataAdapter adapter = new OleDbDataAdapter(com);
    DataSet ds = new DataSet();
    adapter.Fill(ds, "tbname");
    DataTable dtContact = ds.Tables[0];
    dataGridView1.DataSource = dtContact;
    dataGridView1.Columns[0].HeaderText = "ردیف";
    dataGridView1.Columns[1].HeaderText = "نام";
    dataGridView1.Columns[2].HeaderText = "نقش";
    dataGridView1.Columns[3].HeaderText = "نام کاربری";
    dataGridView1.Columns[4].HeaderText = "شماره تلفن";
    dataGridView1.Columns[5].HeaderText = "رمزعبور";
    dataGridView1.AlternatingRowsDefaultCellStyle.Back Color = Color.LightBlue;

    }









    در فرم لود هم کد زیر رو قرار بدید:


    SelectAll();

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

  1. پاسخ: 4
    آخرین پست: جمعه 11 دی 1394, 18:29 عصر
  2. بروز رسانی DataGridView بعد از دستور Insert
    نوشته شده توسط mehdiba3 در بخش C#‎‎
    پاسخ: 11
    آخرین پست: یک شنبه 19 مرداد 1393, 18:23 عصر
  3. بروز رسانی دیتاگرید ویو
    نوشته شده توسط Veteran در بخش VB.NET
    پاسخ: 4
    آخرین پست: دوشنبه 07 فروردین 1391, 10:12 صبح
  4. مبتدی: بروز رسانی فقط تغییرات اعمال شده در dataset
    نوشته شده توسط ali190 در بخش VB.NET
    پاسخ: 16
    آخرین پست: یک شنبه 14 فروردین 1390, 13:23 عصر
  5. عدم بروز رسانی دیتاگرید ویو
    نوشته شده توسط samaram در بخش C#‎‎
    پاسخ: 9
    آخرین پست: سه شنبه 15 دی 1388, 07:10 صبح

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

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