public void DuplicateRow(GridControl gridControl) { // Grid'in veri kaynağını al var gridView = gridControl.MainView as GridView; if (gridView == null) return; // Grid'in veri kaynağını kontrol et var dataSource = gridControl.DataSource as IList; if (dataSource == null) return; // Eğer satır sayısı 0'dan büyükse if (gridView.RowCount > 0) { // Son satırı al var lastRowHandle = gridView.GetRowHandle(gridView.RowCount - 1); var lastRow = gridView.GetRow(lastRowHandle); // Son satırın kopyasını oluştur var newRow = Activator.CreateInstance(lastRow.GetType()); foreach (var property in lastRow.GetType().GetProperties()) { if (property.CanWrite) { property.SetValue(newRow, property.GetValue(lastRow)); } } // Kopyayı veri kaynağına ekle dataSource.Add(newRow); // GridView'e yeni satırı odakla gridView.RefreshData(); gridView.FocusedRowHandle = gridView.GetRowHandle(dataSource.Count - 1); } else { // Veri kaynağında hiç satır yoksa, yeni boş bir satır oluştur ve ekle var itemType = dataSource.GetType().GetGenericArguments().FirstOrDefault(); if (itemType != null) { var newRow = Activator.CreateInstance(itemType); dataSource.Add(newRow); // GridView'e yeni satırı odakla gridView.RefreshData(); gridView.FocusedRowHandle = gridView.GetRowHandle(dataSource.Count - 1); } } } |