سلام استاد مدائنی عزیز وقتتون بخیر
استاد من یه روش دیگه ای رو امتحان کردم برای پاس دادن ایدی کلاس از لیست کلاس ها به فرم افزودن یا ویرایش , و ممنون میشم که نظرتون بگید و اینکه ایا این روش هم روش مناسبی هست یا خیر
سپاس از شما
private int? _courseId;
private bool isEdite = false;
public frmAddOrEditCourse(int? courseId = 0)
{
_courseId = courseId;
InitializeComponent();
}
استاد در خط اول در این کد
private int? _courseId;به این دلیل null پذیرش کردم چون این فرم ما , هم قراره ثبت دوره کنه هم ویرایش دوره , برای ثبت دوره نیازی پاس دادن ایدی به این فرم نیست پس اگه null پذیر نباشه کانستراکتور در هنگام نمونه سازی برای ثبت دوره با ارور مواجه میشه .
و کدی که در خود کانستراکتور نوشتم اگه مقدار داخلش null بود مقدارش 0 بشه.
private void btnEditCourse_Click(object sender, EventArgs e)
{
if (dgvCoursesList.CurrentRow!=null)
{
string id = dgvCoursesList.CurrentRow.Cells[0].Value.ToString();
int courseId = Convert.ToInt32(id);
frmAddOrEditCourse addOrEditCourse = new frmAddOrEditCourse(courseId);
addOrEditCourse.ShowDialog();
BindDgvCourseList();
}
}
این کد در فرم لیست کلاس ها هستش که مقدار رو به کانستراین کد در فرم لیست کلاس ها هستش که مقدار رو به کانستراکتور پاس میده .
فقط این روش یه جایی مشکل داشت اونم زمانی که ما میخواستیم مقدایر دوره رو ادیت کنیم و باید مقدار courseId_ رو داخل courseId خود کلاس میزاشتیم یعنی این قسمت
course.CourseId = _courseId;
_context.courses.Update(course);در این قسمت برنامه یه اروری داد ارور آن این بود که مقدار course.CourseId نباید خالی باشه ولی متغیر courseId_ نال پذیر است و روش برطرف کردن آن هم Cast کردن اون متغیر به int بود
سلام
بله این روش هم درست و روش بسیار خوبیه
سپاسگزارم از لطف و توجهتون اقای مدائنی