70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

ثبت گروهی اطلاعات گرید ویو درون بانک اطلاعاتی

سلام

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

شاید سوال پیش پا افتاده ای باشه، ولی فعلا برای من سواله و پرسیدنش عیب نیست و ندانستنش عیبه

اگرم کسی میدونه که خدارو خوش نمیاد راهنمایی نکنه

سوال من اینه:

اول از همه بگم من از C# WPF و Entity Framework DataBaseFirst استفاده میکنم

من درون صفحه یک گرید خالی دارم(البته از گرید تلریک استفاده میکنم که فکر نمیکنم تفاوتی بکنه)

یک دکمه میخوام بذارم که کاربر وقتی روی دکمه زد یک سطر خالی به انتهای گرید اضافه بشه

بعد کاربر بیاد اطلاعات رو درون گرید و در زیر ستون خودش وارد کنه

واگه خواست دوباره یک سطر جدید خالی در انتها برای ورود اطلاعات ایجاد کنه و یا اگه ورود اطلاعاتش تموم شده بود دکمه ثبت رو بزنه و تمام اطلاعات وارد شده درون گرید ، در بانک اطلاعاتی sql ثبت بشه

و یه دکمه هم برای حذف سطر انتخابی باشه که وقتی روی اون کلیک کرد ، سطر انتخابی حذف بشه از گرید

سوال من شاید یکم زیاد بود و نیاز به جواب طولانی تری نسبت به بقیه سوالات داشته باشه، اما خیلی خوشحال میشم که یکی به ما کمک کنه و این مشکل ما حل بشه و دوستان عزیزم این نکته رو هم در نظر بگیرید که "زکات علم نشر آن است"

ممنون از همه دوستانم که وقت گذاشتن این سوال رو خوندن و تشکر ویژه و پیشاپیش از دوستانی که جواب مارو بدن

پرسیده شده در 1396/07/16 توسط

3 پاسخ

0

سلام، وقت بخیر،

دقیقاً مشکلتون کجاست، شما سوالتون خیلی کلی هست!ً

پاسخ در 1396/07/16 توسط
0

با تشکر از مهندس عزیز

1- چطوری با زدن دکمه سطر خالی به انتها اضافه بشه

2- چطوری مقدار تک تک سلول های وارد شده توسط کاربر رو در هر سطر و ستون بگیریم که بتونیم عملیات انجام بدیم

پاسخ در 1396/07/17 توسط
1

سلام مجدد، فرض کنید مدلی که استفاده می کنید به صورت زیر هست:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

شما ابتدا یک لیست از کلاس مورد نظر ایجاد کنید:

List<Person> people = new List<Peson>();

برای Bind کردن لیست بالا به DataGridView از BindingSource استفاده کنید:

BindingSource bs = new BindingSource();

bs.DataSource = people;

بعد خود BindingSource رو به خصوصیت DataSource کنترل Grid ست کنید:

DataGridView.DataSource = bs;

از اینجا دیگه کارتون راحت میشه، برای ایجاد کردن یک ستون جدید کافیه متد AddNew رو از BindingSource صدا بزنید که یک آیتم جدید به لیستتون اضافه بشه و داخل گرید هم نمایش داده بشه:

bs.AddNew();

برای دسترسی به آیتم های ایجاد شده داخل گرید هم کافیه آیتم های داخل لیست رو پیمایش کنید و مقادیر داخلش رو استفاده کنید:

foreach(var person in people)
{
    // write code here
}

به طور کلی خلاصه کد بالا با فرض یک فرم با نام MainForm، یک گرید با نام DataGridView و ... به صورت زیر هست:

namespace DbClassGenerator
{
    public class Person
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
	
	public class AppDbContext : DbContext
	{
		public DbSet<Person> People { get; set; }
	}
	
    public partial class MainForm : Form
    {
        List<Person> people = new List<Person>();
        BindingSource bs;

        public MainForm()
        {
            InitializeComponent();
            bs = new BindingSource();
            bs.DataSource = people;
            DataGridView.DataSource = bs;
        }
		
		public void AddNewButton_Click(object sender, EventArgs e)
		{
			bs.AddNew();
		}
		
		public void SaveChangesButton_Click(object sender, EventArgs e)
		{
			var context = new AppDbContext();
			
			foreach(var item in people)
			{
				context.People.Add(item);
			}
			
			context.SaveChange();
		}
	}
}

کد بالا یک نمونه ساده هست برای درج رکورد ها، تو قدم بعدی شما باید زمان بارگذاری رکورد ها رو از بانک بخونید و داخل لیستی که تعریف کردید اضافه کنید تا داخل گرید نمایش داده بشه، حذف رکورد ها هم سادست و با کمی زمان گذاشتن می تونید پیاده سازی کنید.

پاسخ در 1396/07/17 توسط

پاسخ شما