PDA

View Full Version : چگونگی نرفتن به سلول بعدی در دیتا گرید در شرایط زیر



iranigirl1364
شنبه 06 تیر 1388, 15:12 عصر
با سلام:
چگونه می توانم اگر مقدار وارد شده در یک سلول دیتاگرید با مقدار یک Textbox مساوی نبود به سلول دیگر نروم و در همان سلول بمانم؟در چه Event ای باید کد مربوطه را بنویسم؟
لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان

adinochestva
شنبه 06 تیر 1388, 15:30 عصر
cell leave

Mahdi.Kiani
شنبه 06 تیر 1388, 19:55 عصر
cell leave
این رویداد برای این منظور مناسب نیست

با سلام:
چگونه می توانم اگر مقدار وارد شده در یک سلول دیتاگرید با مقدار یک Textbox مساوی نبود به سلول دیگر نروم و در همان سلول بمانم؟در چه Event ای باید کد مربوطه را بنویسم؟
لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان
از رویداد Cellvalidating استفاده کنید:



dataGridView1.EndEdit();
e.Cancel = dataGridView1[0, 0].Value.ToString() != textBox1.Text ? true : false;
0و0 بیانگر سلول اول از سطر اول می باشد. می توانید مقادیر مربوط به سلول وسطر مورد نظرتون را قرار دهید.علاوه بر این می توانید از آرگومان های این رویداد استفاده کنید.
موفق باشید./

iranigirl1364
یک شنبه 07 تیر 1388, 17:01 عصر
باسلام:
من دقیقا کد شما را در رویداد Cellvalidating قرار دادم و این Error را می دهد:

object refrence not set to an instance of an object
باتشکر و احترام فراوان



این رویداد برای این منظور مناسب نیست

از رویداد Cellvalidating استفاده کنید:



dataGridView1.EndEdit();
e.Cancel = dataGridView1[0, 0].Value.ToString() != textBox1.Text ? true : false;
0و0 بیانگر سلول اول از سطر اول می باشد. می توانید مقادیر مربوط به سلول وسطر مورد نظرتون را قرار دهید.علاوه بر این می توانید از آرگومان های این رویداد استفاده کنید.
موفق باشید./

Mahdi.Kiani
یک شنبه 07 تیر 1388, 17:53 عصر
سلام
null بودن مقدار value را چک کنید./

iranigirl1364
یک شنبه 07 تیر 1388, 21:06 عصر
با سلام:
من این کد را با توجه به راهنمایی شما استفاده کردم اما این کد بعضی وقتها جواب میده ولی بعضی وقتا جواب نمیده.
علت چیست؟



private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[0].Value != null)
{
dataGridView1.EndEdit();
e.Cancel = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() != textBox1.Text ? true : false;
}
}


لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان

Mohsen229266
دوشنبه 08 تیر 1388, 18:34 عصر
سلام دوست عزیز من با کد جناب کیانی به مشکلی بر نخوردم
فکر کنم اگه
dataGridView1.EndEdit();رو قبل از شرط قرار بدی مشکلی نداشته باشی

iranigirl1364
سه شنبه 09 تیر 1388, 08:54 صبح
باسلام:ناراحت::
من کد را هم به قبل از شرط به صورت زیرمنتقل کردم:



private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
dataGridView1.EndEdit();
if (dataGridView1.Rows[e.RowIndex].Cells[0].Value != null)
{

e.Cancel = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() != textBox1.Text ? true : false;
}
}

اما هر مقداری که در TextBox وارد می کنم چه مساوی باشد و چه مساوی نباشد به سلول بعد منتقل نمی شود .بعضی مواقع هم هر مقداری که در TextBox وارد می کنم چه مساوی باشد و چه مساوی نباشد به سلول بعد منتقل می شود در واقع انگار این کد کاربردی ندارد
با تشکر و احترام فراوان

Mohsen229266
سه شنبه 09 تیر 1388, 10:48 صبح
این برنامه رو ببین واقعا کار میکنه
البته پروپرتی AutoValidate فرم رو به Disable تغییر بدید