PDA

View Full Version : حرفه ای: حذف یک سطر تکراری از Datagridview



lucky_luke_m
جمعه 17 اردیبهشت 1395, 10:24 صبح
درود به همه ی مهندسین
من یک datagridview دارم میخوام کدی بنویسم که با زدن یک کلید بره یه ستون خاص (ستون مورد نظر من) رو چک کنه و اگر فیلدی داخلش تکراری بود آن سطر را کلا حذف کند از datagridview
احتمالا باید همچین کدی نوشته شده ولی دقیقشو خودم نمیدونم
for (int i = 0; i < dataGridView1.RowCount; i++)
{
for (int j = 0; j < i; j++)
{
if (dataGridView1.Rows[i].Cells[1].Value.ToString() == dataGridView1.Rows[j].Cells[1].Value.ToString())
ممنون میشم اگه کد کامل و بدون نقصشو برام بزارید

با تشکر فراوان

davidrobert
شنبه 18 اردیبهشت 1395, 16:11 عصر
درود به همه ی مهندسین
من یک datagridview دارم میخوام کدی بنویسم که با زدن یک کلید بره یه ستون خاص (ستون مورد نظر من) رو چک کنه و اگر فیلدی داخلش تکراری بود آن سطر را کلا حذف کند از datagridview
احتمالا باید همچین کدی نوشته شده ولی دقیقشو خودم نمیدونم
for (int i = 0; i < dataGridView1.RowCount; i++)
{
for (int j = 0; j < i; j++)
{
if (dataGridView1.Rows[i].Cells[1].Value.ToString() == dataGridView1.Rows[j].Cells[1].Value.ToString())
ممنون میشم اگه کد کامل و بدون نقصشو برام بزارید

با تشکر فراوان

از این دستور من برای جلوگیری مقدار تکراری انجام میدم یعنی طرف در آن واحد نتونه 2 تا بار کد وارد کنه نیازی دیگه نیست بیاد مقدار تکراری رو حذف کنه سیستم اصلا اجازه نمیده مقدار تکراری وارد کننه چون سلول مورد نظر رو که تکراری نباشه معرفی کردم و جلو اطلاعات تکراری گرفتم.
private void dgv1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
try
{
int col = e.ColumnIndex;
int row = e.RowIndex;
string data = e.FormattedValue.ToString();

if (col == 10)
{
int iData = Convert.ToInt32(data);
if (iData < 0 || iData > 100)
{
ClsShowMessageBoxError.Error(111, "", "");
return;
}
}

int col2 = e.ColumnIndex;
int row2 = e.RowIndex;
string data2 = e.FormattedValue.ToString();

if (col2 == 12)
{
int iData2 = Convert.ToInt32(data);
if (iData2 < 0 || iData2 > 100)
{
ClsShowMessageBoxError.Error(111, "", "");
return;
}
}
foreach (DataGridViewRow rows in dgv1.Rows)
{
if (rows.Index != e.RowIndex & !rows.IsNewRow)
{
if (rows.Cells[1].Value.ToString() == e.FormattedValue.ToString())
{
dgv1.Rows[e.RowIndex].ErrorText = "مقدار بارکد یا کد کالا نباید تکراری باشد.";
e.Cancel = true;
return;
}
}
}
dgv1.Rows[e.RowIndex].ErrorText = string.Empty;
}
catch (Exception ex)
{
//ClsShowMessageBoxError.Error(102, "182 \n" + ex.Message, "");
}
}
با کمی تغییرمیشه مربوط به حذف قرار داد ولی از همون اول ستون مورد نظر رو معرفی کنی اطلاعات تکراری وارد نمیشه نیاز هم به حذف نیست.

lucky_luke_m
شنبه 18 اردیبهشت 1395, 17:05 عصر
مرسی از شما به خاطر وقتی که برای من گذاشتین
یه سوال دیگه داشتم از خدمتتون
حالا اگه بخوای تو او ستون خاص فقط مثلا چهار بار یه فیلد چاپ شه و اگه پنجمین بار تکرار شه دیگه پنجمین بارو چاپ نکنه باید چه کدی بنویسم؟

باز هم ممنون ازتون