Forum

Data gridview hücre...
 
Bildirimler
Hepsini Temizle

Data gridview hücreleri birleştirme

2 Yazılar
2 Üyeler
0 Likes
800 Görüntüleme
(@yildirimbakar)
Gönderiler: 97
Estimable Member
Konu başlatıcı
 

Merhaba Arkadaşlar;

Data gridvievde hücreleri birleştirmeye çalışıyorum. Sonucu aşağıdaki gibi getiriyor. Benim istediğim Koduna göre hücreleri birleştirsin. Örneğin türün hepsinde MM yazsın , 101 ve 102 her iki kodda da açıklama kısmında Defter yazsın ayrıca Kategori 100 ve 101'de ayrı ayrı B yazsın gibi.

image

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;

}

private void dataGridView1_CellFormatting

{

if (e.RowIndex == 0)

return;

if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))

{e.Value = "";

e.FormattingApplied = true;

}

}

 
Gönderildi : 31/08/2022 17:08

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 32994
Illustrious Member Yönetici
 

Merhaba,

Hücreleri birleştirme işleminde öncelikle birleştirme işleminin nasıl gerçekleştirileceği belirlenmelidir. Siz kodda belirtilen "IsTheSameCellValue" fonksiyonu ile hücrelerin aynı olup olmadığına bakarak birleştirme işlemini gerçekleştiriyorsunuz. Ancak istediğiniz sonucu elde etmek için bu fonksiyonu değiştirmeniz gerekebilir.

Örneğin, türün hepsinde MM yazılması için, hücrelerin sütununda MM değerinin olup olmadığını kontrol edebilirsiniz. Benzer şekilde, açıklama kısmında Defter yazılması için de hücre değerlerini kontrol edebilirsiniz. Kategori 100 ve 101'de ayrı ayrı B yazılması için de aynı şekilde hücre değerlerine bakabilirsiniz.

Örnek olarak, "IsTheSameCellValue" fonksiyonunu aşağıdaki şekilde değiştirebilirsiniz:

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;
}

// Hücrelerin sütununda MM değeri varsa
if (dataGridView1.Columns[column].Name == "tur" && cell1.Value.ToString().Contains("MM") && cell2.Value.ToString().Contains("MM"))
{
return true;
}

// Açıklama kısmında Defter değeri varsa
if (dataGridView1.Columns[column].Name == "aciklama" && cell1.Value.ToString().Contains("Defter") && cell2.Value.ToString().Contains("Defter"))
{
return true;
}

// Kategori 100 ve 101'de ayrı ayrı B yazmak için
if (dataGridView1.Columns[column].Name == "kategori" && cell1.Value.ToString() == "100" && cell2.Value.ToString() == "101")
{
return true;
}
else if (dataGridView1.Columns[column].Name == "kategori" && cell1.Value.ToString() == "101" && cell2.Value.ToString() == "100")
{
return true;
}

return cell1.Value.ToString() == cell2.Value.ToString();
}

 

Bu fonksiyonu kullanarak hücrelerin birleştirilmesi işlemini gerçekleştirebilirsiniz. Ayrıca, hücre biçimlendirmesi işleminde de "IsTheSameCellValue" fonksiyonundaki değişiklikleri dikkate almanız gerekebilir.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 24/03/2023 10:13

Paylaş: