PDA

View Full Version : مبتدی: رویداد مورد نظر برای datagridview



kamiloted
جمعه 08 مرداد 1395, 02:08 صبح
با سلام.
دوستان این رو توی چه رویدادی بزارم که سریع بعد از اضافه کردن کالای بعدی اگه تکراری بود بگه تکراریه.یا اگه کد بهتری دارین برام بزارین.هر رویدادی به جز رویداد خودم.ممنونم


private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
foreach (DataGridViewRow Row in dataGridView1.Rows)
{
if (dataGridView1.SelectedRows.Count > 0)
{
if ((Row.Index == dataGridView1.SelectedRows[0].Index) || (Row.Cells[3].Value == null)) continue;
if ((Row.Cells[3].Value.ToString() == e.FormattedValue.ToString()) && (e.ColumnIndex == dataGridView1.Columns[3].Index))
{
dataGridView1.Rows[e.RowIndex].ErrorText = "شماره کالا تکراری می باشد";
toolStripStatusLabel1.Text = "شماره کالا تکراری می باشد";
e.Cancel = true; break;
}
else toolStripStatusLabel1.Text = ".";
}
}

}

mrprestige
جمعه 08 مرداد 1395, 09:49 صبح
سلام دوست من ، اگه اشتباه نکنم منظورت یه Event مثل Event مربوط به تکست باکس ( TextChange) هست . برای این منظور شما باید از رویداد EditingControlShowing مربوط به دیتاگرید استفاده کنی و اینکه استفاده از Break توی شرط منطقی نباشه بعدم شما میتونستی فیلد مربوط به کد کالا رو به ستون دیتاگرید Bind کنی و شرطی رو بزاری که اگه مقدار Cell دیتاگرید برابر با فیلد کدکالا بود عملیات ثبت انجام نشه .

پیروز موفق باشی

kamiloted
جمعه 08 مرداد 1395, 12:47 عصر
سلام دوست من ، اگه اشتباه نکنم منظورت یه Event مثل Event مربوط به تکست باکس ( TextChange) هست . برای این منظور شما باید از رویداد EditingControlShowing مربوط به دیتاگرید استفاده کنی و اینکه استفاده از Break توی شرط منطقی نباشه بعدم شما میتونستی فیلد مربوط به کد کالا رو به ستون دیتاگرید Bind کنی و شرطی رو بزاری که اگه مقدار Cell دیتاگرید برابر با فیلد کدکالا بود عملیات ثبت انجام نشه .

پیروز موفق باشی

ممنونم دوست عزیز اما بی تاثیر بود.

mrprestige
شنبه 09 مرداد 1395, 14:05 عصر
سلام دوست من ، ببین من برات یه مثال کوچیک از همین رویداد میزنم همینطور به نسبت اون سوالی که داشتی و باقی هنر خودت رو توی کد نویسی میطلبه . این مثالی که برات نوشتم میاد اول داخل رویدادمربوطه یه نوع از textbox درست کنه و شرط گذاشتم اگه nullنبود به نام tb داخل رویدادش عملیات مربوطه رو انجام بده حالا عملیات چی هست در مرحله اول داخل رویداد دوباره یه نوع از textbox میسازم تا دسترسی مستقیم داشته باشم به سطری که میخوام داده موردنظرم رو داخلش بریزم و گفتم به ازای هر سطری در ستون اول اگه داده ای برابر داده ورودی که بهش دادم بود اون رو Highlight میکنه . حالا باز به نسبت خواسته خودت بدنه حلقه شرط رو عوض کن عرض کردم از اینجا دیگه هنر خودت رو میطلبه

private void dataGridView1_EditingControlShowing_1(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 0)
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{


tb.KeyPress += new KeyPressEventHandler(Tex_KeyPress);
}
}
}
private void Tex_KeyPress(object sender, KeyPressEventArgs e)
{
var textbox = (TextBox)sender;
foreach (DataGridViewRow row in dataGridView1.Rows)
{


if (row.Cells[0].Value.ToString().Contains(textbox.Text))
{
row.Selected = true;
}
}
}



پیروز موفق باشی.
از کدنویسی لذت ببری