PDA

View Full Version : ادغام کردن سطرهای یک ستون از datagridview



samiasoft
چهارشنبه 23 اسفند 1396, 23:28 عصر
سلام دوستان

چگونه چندسطر از یکی از ستونهای دیتاگرید را در هم ادغام کنیم ؟ همانند تصاویر زیر که در یک نرم افزاری این عمل رو انجام داده اند :

http://s9.picofile.com/file/8321732776/d1.jpg

وقتی روی اون سطرهای ادغام شده هم کلیک میکنم عین یک تکست باکس میشوند :
http://s9.picofile.com/file/8321732784/d2.jpg

ناگفته نماند از دیتاگرید کامپونت دات نت بار استفاده میکنم.

samiasoft
چهارشنبه 23 اسفند 1396, 23:59 عصر
من دستورات زیر رو استفاده کردم :

bool IsTheSameCellValue(int column, int row){
DataGridViewCell cell1 = dataGridView1[column, row];
DataGridViewCell cell2 = dataGridView1[column, row - 1];
if (cell1.Value == null || cell2.Value == null)
{
return false;
}
return cell1.Value.ToString() == cell2.Value.ToString();
}

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){
e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;
if (e.RowIndex < 1 || e.ColumnIndex < 0)
return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))
{
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
}
else
{
e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top;
}
}

if (e.RowIndex == 0) return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))
{
e.Value = "";
e.FormattingApplied = true;
}

و بدین حالت شد دیتاگرید :

http://s8.picofile.com/file/8321734350/2018_03_15_002455.jpg
که همانطور که میبینید 2 مورد مشکل وجود دارد :

1- اول اینکه متن مربوطه در ستون ادغام شده رو من میخواستم همانند تصاویر قبلی در وسط ردیف های ادغام شده قرار بگیره که متاسفانه اینجا در اولین ردیف قرار گرفته!

2. مشکل بعدی هم که نتونستم حل کنم این هستش که این دستورات کل ستون هارو ادغام میکند...یعنی الان ستون اول که برا ردیف هست رو هم ادغام کرده...البته من جهت تست کد مقدار کل ردیف ها رو یکسان قرار داده بودم برا همین ادغام کرده ولی خب شاید در ستون های دیگر مقادیر یکسان داشته باشم نمیخواهم بدین شکل شود...فقط ستون دوم رو میخواستم ادغام کنم.