KMRT BSRN

"Hiç kimsenin ilgisine ihtiyaç duymadığın gün olgunlaşırsın. Hiç kimseden beklentiye girmediğin gün yara almazsın. Ve hiç kimseye bağımlı kalmazsan kazanırsın." OSHO


Yorum bırakın

ASPNET MVC ile Bootstrap ve HintCSS Kullanarak Button & Link Helper Metotlar

ASPNET MVC projelerinizde sürekli olarak kullandığımız hyperlink ve button elementleri için kullanabileceğiniz helper metotları sizlerle paylaşmak istiyorum. Bootstrap ve HintCSSHintCSS kullanan overload versiyonları ile az kodla sayfalarınız da güzel link’ler ve button’lar oluşturabilirsiniz. Kodları paylaşmadan önce açıklamakta fayda var.

Proje içerisinde 4 adet dosyadan helper metotlar gelmektedir.

helper-methods-cshtml

  • HtmlButton.cshtml : Button elementi eklemede kullanılan helper metotları içerir.
  • HtmlLink.cshtml : HyperLink elementi eklemede kullanılan helper metotları içerir.
  • HtmlHint.cshtml : HintCSS kullanan element eklemede kullanılan helper metotları içerir.
  • MyHtml.cshtml : Yukarıdaki dosyalarda yer alan button, link, hint helper metotları projenizde kullanarak düğmeler oluşturacaksınız. Dolayısı ile bu kodlarda zamanla sayfalarınız da tekrar etmeye başlayacaktır. İşte o kodları da tek bir helper metot haline getirecek şekilde kendi projem için oluşturduğum helper metotları içerir. Yani kısaca helper metodun, helper metodu diyebiliriz. Hepsi kod tekrarını azaltmak içindir.

 

button-link-helper-methods-in-mvc

Yukarıdaki görsel de gördüğünüz gibi küçük link/button, büyük link/button oluşturmada kullanabileceğiniz helper metotlar, zaten bunları 2-3 html satırı ile oluşturabiliyoruz. Burada ki amaç, proje genelinde bu kodların merkezi helper metotlarda toplanmasının sağlanması ve buradan yönetilmesi ile bir değişiklikte hepsinin etkilenmesinin sağlanması, kod tekrarlarının azaltılmasıdır. Aynı zaman da başta da dediğim gibi kodların tek bir metot seviyesine kadar azaltılmasıdır.

kmb-udemy-reklam

Okumaya devam et

Reklamlar


Yorum bırakın

ASP.NET MVC ile Bootstrap Checkbox ve Radio Kullanımı

Evet.. Uzun bir aradan sonra tekrar makale yazmaya başlamalıyım diye düşünüyordum. Sonunda yavaştan yavaştan başlamak gerektiği için hadi bakalım dedim ve kolları sıvadım. Aslında bunun sebeplerinden biri artık çoğu kişinin video içeriklere yönelmesi ve video ile bazı şeyleri göstererek daha hızlı ve 1 dakikalık bir zaman dilimine daha çok şey sığdırabildiğimizden dolayıdır sanırım. Fakat açıkçası ben hala makalelerden ve kitaplardan yanayım. Video içerikler daha kolay uçuyor akıllardan ve özümsemesi zor. Anlatılan bir noktayı bulması da daha zor. Henüz video içi arama pek gelişmedi. Sanırım bu gelince bende ona daha fazla yönelebilirim. Tabii ki izlemek, anlatılanı yapılırken görmek ayrı, olmazsa olmaz. Ama nedense benim gözlerim metin arıyor, ne diyebilirim.

Peki konumuza dönelim. Bu yazımızda sizlere asp.net mvc içinde radio ve checkbox kullanımı ile ilgili bir yöntem göstereceğim. Bende herkes gibi projelerimde veya örneklerimde bootstrap kullanıyorum. Dolayısı ile en çok sıkıntı duyduğum nokta checkbox ve radio kontrollerinin tasarımının bootstrap’te eksik olması! Aslında eksik değil ama bizim alıştığımızdan farklı olması. Bizim bildiğimiz bu şekilde..

 

image

Bootstrap kullanılsa bile ortaya çıkan radio ve checkbox görünümü.

 

Fakat bootstrap ‘in yaklaşımı ile olması gereken budur.

 

image

Bootstrap in checkbox ve radio yaklaşımı bu şekilde

 

Kullanımı kolay ve özellikle mobil cihazlar için bu tasarım aslında harika oluyor.. Fakat bunu elde etmek için gereken HTML kodu şu şekilde(Bu arada ikonlar tamamen benim uydurmamdır ki onu da nasıl yaptığımı göstereceğim). Örneğin HTML, CSS ve JS kodlarına buradan ulaşabilirsiniz.

 

kmb-udemy-reklam

Okumaya devam et


Yorum bırakın

ADOX ile MDB ya da ACCDB Access Database Oluşturma

Geliştirdiğiniz uygulamalarda kullanmak üzere 2010 öncesi access veri tabanı(*.mdb) ya da 2010 ve sonrası access veri tabanı(*.accdb) oluşturma ihtiyacınız olursa, aşağıdaki kodlar ile bir access veri tabanı dosyasının disk üzerinde oluşturulmasını sağlayabilirsiniz. Ayrıca oluşturmuş olduğunuz veri tabanına tablo eklemesini ve basit veri tiplerinin nasıl tanımlandığını inceleyebilirsiniz

 

kmb-udemy-reklam

Okumaya devam et


2 Yorum

ASP.NET MVC Yazılımcıların Yükselişi

gorselYeni bir eğitim için kolları sıvamış bulunuyorum. Aslında birçok kişi tarafından sürekli istenen bir eğitimdi. Bende yarattığım fırsatlarda bu eğitimi hazırlamaya karar verdim. Şu an eğitimin tüm videoları tamamlanmamış durumda ama son hızla tamamlamak için fırsat buldukça uğraşıyorum. Umarım ortaya güzel bir eğitim çıkar ve bekleyenleri memnun eder. Şu an yaklaşık 8 saatlik bir video serisi çıkmış durumda ama benim öngörüm bu daha yolun yarısı, eğitimi merak edenler için aşağıda tanıtım videosunu ve link’ini paylaşıyor olacağım. Kendiniz de henüz yayınlanmamış bölümleri gördüğünüzde ne demek istediğimi anlayacaksınız.

Eğitim içeriğinde ASP.NET MVC temellerinden başlayarak tüm konulara değinmeye çalışıyor olacağım. Tasarım işlerini Bootstrap’Dan faydalanarak, veritabanı işlemlerini ise Entity Framework CodeFirst ile yapıyor olacağım. Eğitim sonunda 2 Bonus bölüm ve bir uygulama örneği yapıyor olacağım.

Eğitimi bunlarla sınırlamak istemiyorum. Dolayısı ile zamanla fazladan bölüm ekleme ve yenilikleri yine aynı eğitim üzerinden anlatarak eğitimi genişletmeyi düşünüyorum.

ASP.NET MVC Eğitimi için tıklayınız.

Tüm Eğitimlerim için tıklayınız.

ASP.NET MVC Eğitimi by Kadir Murat Başeren

 

kmb-udemy-reklam

Eğitim içeriğini aşağıda görebilirsiniz;

  • ASP.NET MVC Giriş
  • Razor Syntax (Sözdizimi)
  • Views
  • Controller & View Arası İletişim
  • Models ve Model Binding
  • Bootstrap Framework ve Helper Metotlar
  • Entity Framework CodeFirst Entegrasyonu
  • Entity Framework CodeFirst ile Veritabanı İşlemleri
  • Auto-Generated Views
  • ActionResult Türleri
  • Action Attributes
  • Routing
  • BundleConfig Yapılandırması
  • Durum Yönetimi
  • Validation
  • Filters
  • Ajax Helper Metodları
  • JQuery ile Ajax İşlemleri
  • Area
  • BONUS : Web Helpers
  • BONUS : Grid.MVC Entegrasyonu
  • Uygulama : MyEvernote Örneği

Gördüğünüz gibi dolu bir içerik sizleri ve benim çekmemi bekliyor. Ben üstesinden gelebileceğimi düşünüyorum. Umarım sizlerede bir faydası dokunur.

Şimdiden iyi seyirler ve başarılı projeler dilerim.

Visual Studio ile C# Programlama
ASP.NET MVC ile Grid.MVC Entegrasyonu

 

kmb-udemy-reklam


Yorum bırakın

Excel Export için ReportModel Yapısı ve Kullanımı

Excel export işlemi için daha öncede yazdığım yazıya buradan ulaşabilirsiniz. Bu yazımda sizlere excel export işleminde kullanabileceğiniz esnek bir ReportModel’den bahsedeceğim. Bu yapıları kullanarak oluşturacağınız bir ReportModel’i excel export işleminde kullanabilirsiniz. Böylece elinizde esnek bir yapı olacaktır. Dilediğiniz şekilde excel tabloları oluşturabilirsiniz.

Verilerinizi veritabanından çektikten sonra Report Model’i oluşturmanız yeterli olacaktır. Excel tablosunda görünmesini istediğiniz özellikleri(property) içeren anonim(anonymous) tipi oluşturmanız yeterlidir.

Öncelikle nasıl kullanıldığını içeren Helper class’ı sizlerele paylaşıyorum. Diğer class’larda yazının ilerleyen kısımların mevcut. Kod aralarında açıklama satırları mevcuttur. Anlaşılacağını umuyorum.

kmb-udemy-reklam

MyExcelHelper.cs

using ExcelExportSample.Model;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ExcelExportSample
{
    public class MyExcelHelper
    {
        public void WriteToExcel(RDExportReportModel exportReportModel, string path)
        {
            // Excel dosya erişimi için gerekli tanımlar yapılır.
            Microsoft.Office.Interop.Excel.Application xlApp;
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Microsoft.Office.Interop.Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            // Başlık(Header) hücrelerin renklenmesi sağlanır.
            xlWorkSheet.Cells["1:1"].Font.Bold = true;
            xlWorkSheet.Cells["1:1"].Font.Color = Color.Red;

            int colIndex = 65;  //A

            // Excel tablo Header'lar yazılır.
            foreach (RDExportReportColumnModel column in exportReportModel.ExportData.Keys)
            {
                string cellIndex = char.ConvertFromUtf32(colIndex);
                string cellHeader = column.ColumnName;

                xlWorkSheet.Cells[string.Concat(cellIndex, 1)].Value = cellHeader;

                if (column.ColumnWidth > 0)
                    xlWorkSheet.Cells[string.Concat(cellIndex, 1)].ColumnWidth = column.ColumnWidth;

                if (!string.IsNullOrEmpty(column.Format))
                    xlWorkSheet.Cells[string.Concat(cellIndex, ":", cellIndex)].NumberFormat = column.Format;

                colIndex++;
            }

            colIndex = 65;  //A

            // Her bir kolon için dönülerek, kolon kolon veriler yazılır.
            foreach (RDExportReportColumnModel column in exportReportModel.ExportData.Keys)
            {
                string cellIndex = char.ConvertFromUtf32(colIndex);
                int rowIndex = 2;

                // Değerler satır satır hücrelere yazılır.
                // Yazma işlemi kolon kolon yapılır.
                // Her kolon satur satır işlenir, sonra diğer kolona geçilir.
                foreach (RDExportReportCellModel cellModel in exportReportModel.ExportData[column])
                {
                    xlWorkSheet.Cells[string.Concat(cellIndex, rowIndex)].Value = cellModel.Value.ToString();
                    rowIndex++;
                }

                colIndex++;
            }

            // Excel dosya kaydedilir.
            xlWorkBook.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
        }

        public void SaveSampleExcelExportFile()
        {
            RDExportReportModel reportModel = new RDExportReportModel();
            reportModel.ExportData = new Dictionary>();

            // Örnek veri bu veri veritabanından geliyor olsun.
            var sampleData = new List>() {
                new Tuple("Murat","Başeren"),
                new Tuple("Şükran","Başeren"),
                new Tuple("Belinay","Başeren")
            };

            // Veritabanından gelen veriyi istediğimiz bir model'e dönüştürüyoruz.
            var data = (from x in sampleData
                        select new
                         {
                             FirstName = x.Item1,
                             LastName = x.Item2
                         }).ToList();

            // Kolon ve verisi oluşturulur.
            reportModel.ExportData.Add(
                RDExportReportColumnModel.CreateColumnModel("ExportExcel#", "FirstName"),
                new List(
                    data.Select(x =>
                        new RDExportReportCellModel()
                        {
                            Value = x.FirstName
                        })));


            // Kolon ve verisi oluşturulur.
            reportModel.ExportData.Add(
                    RDExportReportColumnModel.CreateColumnModel("ExportExcel#", "LastName"),
                    new List(
                        data.Select(x =>
                            new RDExportReportCellModel()
                            {
                                Value = x.FirstName
                            })));

            // Excel export yapılır.
            WriteToExcel(reportModel, Application.StartupPath + @"\sample.xls");
        }
    }
}

RDExportReportModel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcelExportSample.Model
{
    public class RDExportReportModel
    {
        ///

        /// Verileri kolon ve kolona ait hücre değerleri olarak saklıyoruz. Dolayısı ile satırları elde etmek için aşağıdaki metotlar kullanılır.
        ///

public Dictionary<RDExportReportColumnModel, List> ExportData { get; set; } ///
/// Verilen satır index ‘ine ait satır verilerini getirir. ///

/// /// public RDExportReportRowModel GetRow(int rowIndex) { RDExportReportRowModel rowModel = new RDExportReportRowModel(); rowModel.Cells = new List(); this.ExportData.Values.ToList().ForEach( x => { rowModel.Cells.Add( new RDExportReportCellModel() { Value = x[rowIndex].Value }); }); return rowModel; } ///
/// Tüm satırları verir. ///

/// public List GetRows() { List rows = new List(); int rowCount = this.ExportData[this.ExportData.Keys.First()].Count; for (int i = 0; i < rowCount; i++) { RDExportReportRowModel rowModel = new RDExportReportRowModel(); rowModel.Cells = new List(this.ExportData.Keys.Count); foreach (RDExportReportColumnModel column in this.ExportData.Keys) { rowModel.Cells.Add( new RDExportReportCellModel() { Value = this.ExportData[column][i].Value }); } rows.Add(rowModel); } return rows; } } }

RDExportReportColumnModel.cs

namespace ExcelExportSample.Model
{
    public class RDExportReportColumnModel
    {
        public string ColumnName { get; set; }
        public int ColumnWidth { get; set; }
        public string Format { get; set; }


        ///

        /// 
        ///

/// Localization section. /// Localization key. For example; “{0}#{1}” /// public static RDExportReportColumnModel CreateColumnModel(string section, string key) { return new RDExportReportColumnModel() { ColumnName = Localization.Get(section, key) }; } } public class Localization { public static string Get(string section, string key) { // Burada veritabanından okunan localization eşlemesinin karşılığı elde edilir. Örnek; Login#Username gibi anahtar veritabanından sorgulanır. return section + “#” + key; } } }

RDExportReportRowModel.cs

using System.Collections.Generic;
using System.Drawing;

namespace ExcelExportSample.Model
{
    public class RDExportReportRowModel
    {
        public List Cells { get; set; }
    }
}

RDExportReportCellModel.cs

namespace ExcelExportSample.Model
{
    public class RDExportReportCellModel
    {
        public object Value { get; set; }
    }
}

Örnek kullanım;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcelExportSample
{
    class Program
    {
        static void Main(string[] args)
        {
            MyExcelHelper myExcelHelper = new MyExcelHelper();
            myExcelHelper.SaveSampleExcelExportFile();
        }

    }
}

Proje dosyası için tıklayınız..

 

kmb-udemy-reklam


2 Yorum

Engin Demiroğ ‘ dan Yazılım Prensipleri (SOLID) Eğitimi – ÜCRETSİZ

Her yazılımcının yazacağı her satır kodda aklından çıkarmaması gereken temel prensipleri anlatan.
Engin Demiroğ’dan Temmuz ayı boyunca kayıt olan herkese ÜCRETSİZ – Yazılım Prensipleri (SOLID) Eğitimi Eğitimi yayında.

Her yazılımcının yazacağı her satır kodda aklından çıkarmaması gereken temel prensipleri Engin Demiroğ’ dan dinleyerek öğrenin.

Prensiplerin tamamı gerçek temelli projeler düşünülerek anlatılmış. Bir çok eğitim ve proje için önceden izlenmesi faydalı olacaktır.

Kurs İçeriği:

Introduction And Code Smells
Single Responsibility Principle
Open Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle

Tüm eğitimler için tıklayınız.

(Temmuz ayı boyunca kayıt olan herkese)

Eğitime $40 yerine ömür boyu ÜCRETSİZ kayıt olmak için kupon kodunuz : YAZILIMDEVI

Not: Ücretsiz Eğitim Linkini paylaşmanızı rica ederiz..

kmb-udemy-reklam


1 Yorum

List Tipinden İki Farklı Şekilde Excel Export

İnternette ararken bulduğum iki farklı kütüphane kullanarak yazılmış, List<T> generic tipinden nesnelerinizi excel ‘e export(aktarma) işleminde kullanabileceğiniz kod parçalarını tek bir class içinde topladım. Sürekli ihtiyaç duyulan bir kod olduğu için sizlerinde kıyıya köşeye bir yerlere atmanızı tavsiye ederim.

Kod parçalarından biri Microsoft.Office.Interop.Excel kütüphanesini kullanarak export işlemi yaparken, diğer kod parçası ise DocumentFormat.OpenXml kütüphanesini kullanarak export işlemini gerçekleştiriyor. Örnek bir nesne instance’ı ile denediğimde başarılı ve aynı sonucu aldım. Kod parçaları güzel bir şekilde çalışıyor. List<T> generic tipinde kullandığınız T tipine ait özellikleri kolon olarak ayarlıyor. Sonrasında metoda parametre geçtiğiniz List<T> nesnenizde dönerek, her bir nesneden bir tablo satırı elde ederek excel tablosu şeklinde bir çıktı elde ediyor.

kmb-udemy-reklam

Projenize eklemeniz gereken referansları kod içinde belirttim. Kodları bir class içine koyduktan sonra kullanmak için;

bool result = false;

// Interop.Excel yöntemi ile..
MyHelpers.ExportHelper eh = new MyHelpers.ExportHelper();
result = eh.ExportExcel(fileName, list);

// OpenXml yöntemi ile
result = MyHelpers.ExportHandle.CreateExcelDocument(list, fileName);

Kaynak : http://www.mikesknowledgebase.com

Okumaya devam et