چک کردن خالی بودن سلولهایی از DataGridView
سلام
من یک دیتا گریدویو دارم که در ابتدا به هیچ بانکی متصل نیست و میتونم اطلاعات رو در اون وارد کنم و در جایی ثبت کنم.
علاوه بر اون میتونم مثلا با کلیک روی یه باتن ، اطلاعاتی رو بر اساس یکسری شرط در این گرید بریزم و در واقع بانکی رو به گرید بایند کنم.
از اونجایی که اطلاعات در خود گرید وارد میشه ، بعضی از سلولها نباید بدون مقدار بمونند.
من در رویداد CellLeave دیتاگریدویو مقدار این سلول رو بررسی میکنم. حالا مسله اینه که نمیدونم این جای خالی رو یه رشته خالی ("") تلقی میکنه یا Null !!! چون در هر صورت خطای اکسپشن میده!!
تصور من اینه که زمانیکه بانکی به گرید متصل نیست این جای خالی رو Null در نظر میگیره و زمانی که به بانک متصله یه یک رشته خالی!!!
حالا نمیدونم چطور این مسله رو حل کنم که در صورت خالی بودن سلولی خاص ارور بده یا به همون سلول برگرده!
نقل قول: چک کردن خالی بودن سلولهایی از DataGridView
چرا از تکست باکس برای مقدار دادن به جدولتون استفاده نمی کنید ؟
اون طوری کنترلش آسون تر
نقل قول: چک کردن خالی بودن سلولهایی از DataGridView
صد البته که راحت تره:چشمک:
اما خب اینجوری خواستند. اگه اختیارش دست من بود که حتما از تکست باکس استفاده میکردم.
نقل قول: چک کردن خالی بودن سلولهایی از DataGridView
String.Empty رو امتحان کردی؟
نقل قول: چک کردن خالی بودن سلولهایی از DataGridView
نقل قول:
نوشته شده توسط
Afshin_Zavar
String.Empty رو امتحان کردی؟
من این کد رو برای textbox تست کردم ، درست عمل میکنه و مشکلی نداره
if ((string.IsNullOrEmpty(textBox1.Text))) MessageBox.Show("this is null");
البته اگه space بزنیم دیگه اونو خالی در نظر نمیگیره.
اما همین کدو اگه برای گرید به کار ببرم خطای اکسپشن میده(Object reference not set to an instance of an object.)
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (!(string.IsNullOrEmpty(dataGridView1.CurrentRow.C ells[0].Value.ToString()))) MessageBox.Show("this is null");
}
نقل قول: چک کردن خالی بودن سلولهایی از DataGridView
نقل قول:
البته اگه space بزنیم دیگه اونو خالی در نظر نمیگیره.
علت اینه که از Trim استفاده نمیکنی
if ( textBox1.Text.Trim() == String.Empty )
{
}
من توی MSDN یه جستجو کردم احتمالا اینا به دردت میخورن
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if( dataGridView1.Columns[e.ColumnIndex].Name.Contains("Firstname"))
if (String.IsNullOrEmpty(e.FormattedValue.ToString()))
{
dataGridView1.Rows[e.RowIndex].ErrorText = "ستون نام خالی است";
e.Cancel = true;
}
}
//---------------------------------------------------------------
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;
}
ضمنا به حرف اول دقت کن. باید از String استفاده کنی نه string. (حرف اول اسامی کلاسها باید uppercase باشه)
ضمن اینکه در متد leave که پارامتر DataGridViewCellEventArgs e داره دفت کن. بهتره به جای بدست آوردن سطر جاری، از این پارامتر استفاده کنی. که در بالا نوشتم
نقل قول: چک کردن خالی بودن سلولهایی از DataGridView
privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
string ch = dataGridView1.CurrentRow.Cells[0].Value.ToString();
MessageBox.Show("مشکلی نیست");
}
catch
{
MessageBox.Show("فیلد خالی است");
}
}