PDA

View Full Version : سوال: آپدیت کردن datagridview بعد از درج عضو



barbimusic
سه شنبه 10 مهر 1397, 11:04 صبح
سلام روزتون به خیر

ببخشید من یه گرید ویو دارم لیست اعضا رو داره که دو تا ستونش با Dataset پر میشه یعنی DataGridVewComboBoxColumn هست .

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

من اول کد زیر رو میذاشتم توی فرم اعضا :

memberTableAdapter.Update(sepehrImamRezaDataSet.Me mber);
boardTableAdapter.Update(sepehrImamRezaDataSet1.Bo ard);
using (var db = new SepehrImamRezaDB())
{
dgMembers.AutoGenerateColumns = false;
var p = db.Members.Select(c => new
{
c.LastName,
c.FirstName,
c.Id,
c.MemberNumber,
c.MemberStartDate,
c.ParentId,
c.BoardId
}).ToList();

dgMembers.DataSource = p;
}بعدش میرفتم توی اضافه کردن اعضا بعد از ثبت یه دونه نمونه جدید از فرم اعضا میساختم و بعد این تابع رو فراخانی میکردم .
خاستم استاتیک بزارمش نشد . اون آداپتور و دیتاست ارور گرفتن .
ممنون میشم راهنمایی کنید .

danialafshari
سه شنبه 10 مهر 1397, 17:19 عصر
توی پروژتون یا از Linq استفاده کنید یا از ویزارد! شما دارید از دو روش استفاده می کنید
نمیدونم کدوم رو در فرم میخواهید نمایش بدید ولی کافیه memberTableAdapter یا boardTableAdapter را Fill کنید و نیازی به کد Linq پایینیش نیست

barbimusic
سه شنبه 10 مهر 1397, 19:09 عصر
توی پروژتون یا از Linq استفاده کنید یا از ویزارد! شما دارید از دو روش استفاده می کنید
نمیدونم کدوم رو در فرم میخواهید نمایش بدید ولی کافیه memberTableAdapter یا boardTableAdapter را Fill کنید و نیازی به کد Linq پایینیش نیست
سلام . من میخام دیتاگرید ویو دوباره فیل یا آپدیت بشه در فرم زیرش . یعنی فرم اصافه کردن عضو جدید دیالوگ باز میشه و یه دونه ثبت میشه ولی دیالوگ بسته نمیشه . میخام کاربر وقتی کاربراشو ثبت کرد و پنجره رو بست توی فرم زیر گرید ویو آپدیت بشه . کد های فیل تنها رو میزارم توی فرم اصافه کردن ولی ارور میگیره . گرید ویو هم پابلیک هست ولی نمیدونم چرا نمیارتش . تابع رو هم پابلیک کردم ولی نمیاره

danialafshari
سه شنبه 10 مهر 1397, 19:34 عصر
برای باز شدن فرم اضافه کردن :

Form2 frm2 = new Form2();
if (frm2.ShowDialog()==DialogResult.OK)
{
this.personsTableAdapter.Fill(this.dbDataSet.Perso ns);
}


در فرم 2 در دکمه ثبت همچین کدی بنویسید:

private void Save_Click(object sender, EventArgs e)
{
personsTableAdapter.Insert(txtFirstName.Text.Trim( ), txtLastName.Text.Trim());
MessageBox.Show("Insert New Record Successfully");
DialogResult = System.Windows.Forms.DialogResult.OK;


this.Close();
}

barbimusic
چهارشنبه 11 مهر 1397, 09:39 صبح
برای باز شدن فرم اضافه کردن :

Form2 frm2 = new Form2();
if (frm2.ShowDialog()==DialogResult.OK)
{
this.personsTableAdapter.Fill(this.dbDataSet.Perso ns);
}


در فرم 2 در دکمه ثبت همچین کدی بنویسید:

private void Save_Click(object sender, EventArgs e)
{
personsTableAdapter.Insert(txtFirstName.Text.Trim( ), txtLastName.Text.Trim());
MessageBox.Show("Insert New Record Successfully");
DialogResult = System.Windows.Forms.DialogResult.OK;


this.Close();
}


ممنون از جواب شما .جواب داد ولی نمیدونم چرا منطقش برعکسه . یعنی وقتی درج میکنم میگه با موفقیت اضافه شد و پنجره رو نمیبنده و باید خودم دستی ببیندمش و باید دکمه ی انصراف رو دو بار بزنم تا آپدیت بشه . در صورتی که فقط کد دکمه ی انصراف DialogResult=DialogResult.OK اینه . واقعا گیج شدم دیگه
کد مربوط به درج اینه :
else if (chek_MemberNumer(MemberNumber) == false)
{
db.sp_AddMember(BoradId, FiscalYear, MemberNumber, String.IsNullOrEmpty(txtFirstName.Text) ? null : Convert.ToString(txtFirstName.Text), string.IsNullOrEmpty(textLastName.Text) ? null : Convert.ToString(textLastName.Text), comboBoxGender.Text, string.IsNullOrEmpty(txtKodeMeli.Text) ? null : Convert.ToString(txtKodeMeli.Text), string.IsNullOrEmpty(txtFatherName.Text) ? null : Convert.ToString(txtFatherName.Text), txtBirthDay.MaskFull ? Convert.ToString(txtBirthDay.Text) : null, string.IsNullOrEmpty(txtMobile.Text) ? null : Convert.ToString(txtMobile.Text), string.IsNullOrEmpty(txtEmail.Text) ? null : Convert.ToString(txtEmail.Text), ParentId, string.IsNullOrEmpty(txtAddress.Text) ? null : Convert.ToString(txtAddress.Text), string.IsNullOrEmpty(txtPhone.Text) ? null : Convert.ToString(txtPhone.Text), txtStartDate.Text, null);
FMessegeBox.FarsiMessegeBox.Show("با موفقیت اضافه شد", "پیغام", FMessegeBox.FMessegeBoxButtons.Ok, FMessegeBox.FMessegeBoxIcons.Information);
DialogResult = DialogResult.OK;
this.Close();


}


برای دکمه انصراف هم گفتم DialogResult=DialogResult.OK .. برش داشتم یه بار ولی باز نشد .


حالت دیباگ هم رفتم دیدم میره ایونت Add_Member (اضافه کردن عضو) رو اجرا میکنه و باعث میشه پنجره نبنده و دوباره نمایش داده بشه در صورتی که من اصلا و اصلا کدم ربطی به اون ایونت نداره!!!!!

danialafshari
چهارشنبه 11 مهر 1397, 17:05 عصر
ممنون از جواب شما .جواب داد ولی نمیدونم چرا منطقش برعکسه . یعنی وقتی درج میکنم میگه با موفقیت اضافه شد و پنجره رو نمیبنده و باید خودم دستی ببیندمش و باید دکمه ی انصراف رو دو بار بزنم تا آپدیت بشه . در صورتی که فقط کد دکمه ی انصراف DialogResult=DialogResult.OK اینه . واقعا گیج شدم دیگه
کد مربوط به درج اینه :
else if (chek_MemberNumer(MemberNumber) == false)
{
db.sp_AddMember(BoradId, FiscalYear, MemberNumber, String.IsNullOrEmpty(txtFirstName.Text) ? null : Convert.ToString(txtFirstName.Text), string.IsNullOrEmpty(textLastName.Text) ? null : Convert.ToString(textLastName.Text), comboBoxGender.Text, string.IsNullOrEmpty(txtKodeMeli.Text) ? null : Convert.ToString(txtKodeMeli.Text), string.IsNullOrEmpty(txtFatherName.Text) ? null : Convert.ToString(txtFatherName.Text), txtBirthDay.MaskFull ? Convert.ToString(txtBirthDay.Text) : null, string.IsNullOrEmpty(txtMobile.Text) ? null : Convert.ToString(txtMobile.Text), string.IsNullOrEmpty(txtEmail.Text) ? null : Convert.ToString(txtEmail.Text), ParentId, string.IsNullOrEmpty(txtAddress.Text) ? null : Convert.ToString(txtAddress.Text), string.IsNullOrEmpty(txtPhone.Text) ? null : Convert.ToString(txtPhone.Text), txtStartDate.Text, null);
FMessegeBox.FarsiMessegeBox.Show("با موفقیت اضافه شد", "پیغام", FMessegeBox.FMessegeBoxButtons.Ok, FMessegeBox.FMessegeBoxIcons.Information);
DialogResult = DialogResult.OK;
this.Close();


}


برای دکمه انصراف هم گفتم DialogResult=DialogResult.OK .. برش داشتم یه بار ولی باز نشد .


حالت دیباگ هم رفتم دیدم میره ایونت Add_Member (اضافه کردن عضو) رو اجرا میکنه و باعث میشه پنجره نبنده و دوباره نمایش داده بشه در صورتی که من اصلا و اصلا کدم ربطی به اون ایونت نداره!!!!!

سورسی که من گذاشتم صرفاً یک مثال بود که 2 نکته داشت
1- نیازی نیست از دو روش رو همزمان استفاده کنید
2- کافیه بعد از Insert یا Update متد Fill رو فراخوانی کنید

barbimusic
چهارشنبه 11 مهر 1397, 17:11 عصر
سورسی که من گذاشتم صرفاً یک مثال بود که 2 نکته داشت
1- نیازی نیست از دو روش رو همزمان استفاده کنید
2- کافیه بعد از Insert یا Update متد Fill رو فراخوانی کنید

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

میشه کد رو ببینیدن کجاش مورد داره ؟

if (f.ShowDialog() == DialogResult.OK)
{
Refresh_DataGrid_Members();

}
ممنونم

اصلا دیباگ کردم نمدونم چرا میره قسمت لود فرم رو اول میاره بعد میره کلیک اونو هندل میکنه !!!!!!!!!!

barbimusic
چهارشنبه 11 مهر 1397, 17:32 عصر
متوجه شدم . ببخشید واقعا . وقت شما رو هم گرفتم . من قبل از کد بالا f.showdialog() رو هم گذاشته بودم .!!:گریه: