PDA

View Full Version : سوال: حذف رکوردهای تکراری datagridview



systam
یک شنبه 31 مرداد 1395, 23:17 عصر
سلام
توی سایت رو گشتم چیزی پیدا نکردم
میخوام رکورد های تکراری گریدویو رو حذف کنم
ممنون میشم راهنماییم کنید

systam
یک شنبه 31 مرداد 1395, 23:59 عصر
من از این کد استفاده میکنم مشکلی توش هست
با این تیکه کد اطلاعات رو به دیتا گرید تزریق :

DataTable dt = new DataTable();
dt.Columns.Add("column1", typeof(string));
dt.Rows.Add({, "a");
dt .Rows.Add({, "a");
dt .Rows.Add({, "b");
dt .Rows.Add({, "b");
dt .Rows.Add({, "b");
dt .Rows.Add({, "b");
dt .Rows.Add({, "c");
dt .Rows.Add({, "c");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
DataGridView1.DataSource = dt;


و بعد با این کد شروع به حذف رکورد های تکراری میکنیم




object numberOfRows = (DataGridView1.Rows.Count - 1);
int i = 0;
while ((i
< (numberOfRows - 2))) {
for (int ii = (numberOfRows - 2); (ii
<= (i + 1)); ii = (ii + -1)) {
if ((DataGridView1.Rows[i].Cells[0].Value.ToString() == DataGridView1.Rows[ii].Cells[0].Value.ToString())) {
DataGridView1.Rows.Remove(DataGridView1.Rows[ii]);
numberOfRows--;
}
}
i++;
}


ولی در خروجی رکورد تکراری هنور وجود داره
142095

danialafshari
دوشنبه 01 شهریور 1395, 03:11 صبح
با سلام
لطفاً برای قرار دادن کد از قالب C#‎‎‎ استفاده کنید
اگر فقط میخواید از نمایشش جلوگیری کنید می تونید از کد زیر استفاده کنید
dt.Columns.Add("column1", typeof(string)); dt.Rows.Add("a");
dt.Rows.Add("a");
dt.Rows.Add("b");
dt.Rows.Add("b");
dt.Rows.Add("b");
dt.Rows.Add("b");
dt.Rows.Add("c");
dt.Rows.Add("c");
dt.Rows.Add("e");
dt.Rows.Add("e");
dt.Rows.Add("e");
dt.Rows.Add("e");
dt.Rows.Add("e");
dt = dt.DefaultView.ToTable(true);

dataGridView1.DataSource = dt;
ولی اگر می خواید پاک بشن از متد زیر:
private void RemoveDuplicates(DataTable dt) {
if (dt.Rows.Count > 0)
{
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (i == 0)
{
break;
}
for (int j = i - 1; j >= 0; j--)
{
if (dt.Rows[i]["column1"].ToString() == dt.Rows[j]["column1"].ToString())
{
dt.Rows[i].Delete();
break;
}
}
}
dt.AcceptChanges();
}
}

private void button1_Click(object sender, EventArgs e) {
RemoveDuplicates(dt);
dataGridView1.DataSource = dt;
}

موفق باشید

systam
دوشنبه 01 شهریور 1395, 10:20 صبح
لطفاً برای قرار دادن کد از قالب C#‎‎‎‎‎‎‎ استفاده کنید

سلام
مرسی داداش بابت راهنمایی
بله منم میدونم کد باید داخل
قالب C#‎‎‎‎‎‎‎ قرار بدم وقتی کد ها رو در داخل قالب قرار میدیم
مثل عکس زیر کد نا مفهوم میشه

142097

danialafshari
دوشنبه 01 شهریور 1395, 12:20 عصر
سلام
مرسی داداش بابت راهنمایی
بله منم میدونم کد باید داخل
قالب C#‎‎‎‎‎‎‎‎ قرار بدم وقتی کد ها رو در داخل قالب قرار میدیم
مثل عکس زیر کد نا مفهوم میشه

142097
اول در notepad.exe کپی کنید بعد درون قالب C# قرار بدید

bhmthe
دوشنبه 16 بهمن 1396, 12:01 عصر
من از این کد استفاده میکنم مشکلی توش هست
با این تیکه کد اطلاعات رو به دیتا گرید تزریق :

DataTable dt = new DataTable();
dt.Columns.Add("column1", typeof(string));
dt.Rows.Add({, "a");
dt .Rows.Add({, "a");
dt .Rows.Add({, "b");
dt .Rows.Add({, "b");
dt .Rows.Add({, "b");
dt .Rows.Add({, "b");
dt .Rows.Add({, "c");
dt .Rows.Add({, "c");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
dt .Rows.Add({, "e");
DataGridView1.DataSource = dt;


و بعد با این کد شروع به حذف رکورد های تکراری میکنیم




object numberOfRows = (DataGridView1.Rows.Count - 1);
int i = 0;
while ((i
< (numberOfRows - 2))) {
for (int ii = (numberOfRows - 2); (ii
<= (i + 1)); ii = (ii + -1)) {
if ((DataGridView1.Rows[i].Cells[0].Value.ToString() == DataGridView1.Rows[ii].Cells[0].Value.ToString())) {
DataGridView1.Rows.Remove(DataGridView1.Rows[ii]);
numberOfRows--;
}
}
i++;
}


ولی در خروجی رکورد تکراری هنور وجود داره
142095

سلام وقت بخیر

اگر امکان داره کدها به دیتابیس access تبدیل کنید من هم این مشکل دارم توی datagridview تکراری ثبت میکنه

اگر نیازه سورس برنامه رو در اختیارتون بزارم !

رامین مرادی
سه شنبه 17 بهمن 1396, 08:47 صبح
سلام وقت بخیر

اگر امکان داره کدها به دیتابیس access تبدیل کنید من هم این مشکل دارم توی datagridview تکراری ثبت میکنه

اگر نیازه سورس برنامه رو در اختیارتون بزارم !


اینجا ربطی به دیتابیس ندادن اینجا کد نویسی سمت برنامه هست.