PDA

View Full Version : سوال: شرط خالی بودن سلول های datagridview



AmiN0012
دوشنبه 16 آذر 1394, 09:02 صبح
سلام دوستان.من یک گرید تو فرمم دارم که کاربر دستی میاد اطلاعاتو وارد میکنه و در نهایت دکمه ثبت رو میزنه.
من میخام قبل ثبت ی شرط بزارم اگه سلولی از گرید خالی بود پیغام بده لطفا اطلاعاتو کامل وارد کنید.
خودم اومدم تک تک برای هر ستونم شرط گذاشتم.اما ارور داد و مهمتر از اینکه خیلی زمان بر و پر هزینست که بیای برای هر ستون ی حلقه بزاری دونه دونه چک کنه.
دستور من اینه که خطا میده:

for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
if (dataGridView1.Rows[i].Cells[1].Value.ToString() == "")
MessageBox.Show("لطفا اطلاعات را کامل وارد کنید");
}

میخاستم بدونم چطور میشه ساده ترین شکل تمام سلول های گرید چک کرد که خالی هست یا نه.در صورت خالی بودن پیغام بده.ممنونم

xman_dj
دوشنبه 16 آذر 1394, 12:27 عصر
دوست من اگه میخوای سرعت ورود اطلاعاتت زیاد باشه از دستور SqlBulkCopy استفاده کن که میتونه اطلاعاتو بصورت جدولی insert کنه
و اما در مورد چک کردن ورود اطلاعات خالی باید بگم که راهی به ذهن من نمیرسه جز چک یکی یکی خانه ها که بقول شما وقت بر هست
اما میتونی شما بعد اینکه اطلاعات رو insert کردین تو تیبل پایگاه داده با یک دستور sql رکورد هایی که فیلد null دارن رو خالی کنی و پاک کنی و یا دستور چک کردن اطلاعات رو بفرستی طرف sql و اونجا چک کنی و درصورت خالی نبودن عمل insert رو انجام بدی (دستور sql بنویسی واسش )و یا اطلاعات رو بصورت تیبل در نظر بگیری و دستور select رو روش اجرا کنی با شرط خانه خالی که اگه بود پیغام مربوطه شمارو چاپ کنه و یا فقط رکورد هایی که کل اطلاعات ستون ها پر هست رو insert کنه.
موفق باشی

AmiN0012
دوشنبه 16 آذر 1394, 14:45 عصر
ممنونم دوست من.اما تک تک باشه من باید به اندازه تعداد ستون هام حلقه بزارم.واین به نظرم منطقی نیست.من برای درج به ازای هر سطر بک insert میکنم توسط حلقه.
شما فرض کن من 5 تا سطر دارم سطر سومم ی سلول خالی داره.اونوقت برنامه میاد دوتا سطر اولو درج میکنه به سومی رسید ارور سیستمی میده که نباید خالی باشه هیچ فیلدی

Mahmoud.Afrad
دوشنبه 16 آذر 1394, 20:38 عصر
همونطور که سطرها رو پیمایش میکنید میتونید ستونها رو هم پیمایش کنید.

bool dgvIsComplete = true;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
object obj = dataGridView1.Rows[i].Cells[j].Value;
if (string.IsNullOrEmpty(Convert.ToString(obj)))
{
dgvIsComplete = false;
break;
}
}
}
if (dgvIsComplete)
{
// insert to db
}
else
{
MessageBox.Show(@"Fill all cells");
}

asman.abi
سه شنبه 17 آذر 1394, 09:58 صبح
خیلی ساده همون کدت برای بررسی خالی بودن یک سلول از یک ردیف رو در RowLeave در event گرید قرار بده.