PDA

View Full Version : سوال: چک کردن خالی بودن سلولهایی از DataGridView



unique1984
چهارشنبه 26 فروردین 1388, 20:59 عصر
سلام
من یک دیتا گریدویو دارم که در ابتدا به هیچ بانکی متصل نیست و میتونم اطلاعات رو در اون وارد کنم و در جایی ثبت کنم.
علاوه بر اون میتونم مثلا با کلیک روی یه باتن ، اطلاعاتی رو بر اساس یکسری شرط در این گرید بریزم و در واقع بانکی رو به گرید بایند کنم.
از اونجایی که اطلاعات در خود گرید وارد میشه ، بعضی از سلولها نباید بدون مقدار بمونند.
من در رویداد CellLeave دیتاگریدویو مقدار این سلول رو بررسی میکنم. حالا مسله اینه که نمیدونم این جای خالی رو یه رشته خالی ("") تلقی میکنه یا Null !!! چون در هر صورت خطای اکسپشن میده!!
تصور من اینه که زمانیکه بانکی به گرید متصل نیست این جای خالی رو Null در نظر میگیره و زمانی که به بانک متصله یه یک رشته خالی!!!
حالا نمیدونم چطور این مسله رو حل کنم که در صورت خالی بودن سلولی خاص ارور بده یا به همون سلول برگرده!

asefy2008
چهارشنبه 26 فروردین 1388, 21:21 عصر
چرا از تکست باکس برای مقدار دادن به جدولتون استفاده نمی کنید ؟
اون طوری کنترلش آسون تر

unique1984
چهارشنبه 26 فروردین 1388, 22:21 عصر
صد البته که راحت تره:چشمک:
اما خب اینجوری خواستند. اگه اختیارش دست من بود که حتما از تکست باکس استفاده میکردم.

Developer Programmer
چهارشنبه 26 فروردین 1388, 23:04 عصر
String.Empty رو امتحان کردی؟

unique1984
پنج شنبه 27 فروردین 1388, 21:44 عصر
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");
}

Developer Programmer
پنج شنبه 27 فروردین 1388, 22:52 عصر
البته اگه 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 داره دفت کن. بهتره به جای بدست آوردن سطر جاری، از این پارامتر استفاده کنی. که در بالا نوشتم

hasan_esfahan
پنج شنبه 27 فروردین 1388, 23:32 عصر
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
string ch = dataGridView1.CurrentRow.Cells[0].Value.ToString();
MessageBox.Show("مشکلی نیست");
}
catch
{
MessageBox.Show("فیلد خالی است");
}

}