C#nedir?com
 
YAZAR HAKKINDA
Turhal Temizer
Turhal Temizer
http://www.turhaltemizer.com
İletişme geçmek için tıklayın.
92 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: ASP ASP.NET Asp.Net MVC LocalReport Microsoft Report MimeType Model View Controller MVC MVC 2 Report Report wizard ReportServerDataSource ASP.NET Turhal Temizer
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : ASP.NET
Yayınlanma Tarihi : 5.5.2010
Okunma Sayısı : 31151
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
ChatBot UI Sample 11.12.2017
Turhal Temizer 'in Blogu
C# – IRR Function 11.12.2017
Burak Selim Şenyurt
JWT(JSON Web Token) Kullanımı 11.12.2017
Burak Selim Şenyurt
Apache Kafka ile Konuşmaya Çalışmak 11.12.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Asp.Net MVC – Microsoft Report Yardımı ile Raporlama
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Asp.Net MVC Framework ile geliştirilen uygulamalar oldukça fazlalaşmaya başladı. Bu artış ile birlikte uygulamaların içerisinde yapılacak işlemlerden beklenen beklentilerde o oranda artmaktadır. Önceleri sadece verileri göstersin, rahatça veri tabanına kayıt yapalım, silelim, güncelleme yapabilmesi gibi yetkinlikleri basitçe yapabilmesi kolaylık olarak görülürken bir süre sonra kullanmış olduğumuz master page 'in tasarımını da kolayca yenileyebilelim, toolbox içerisinde yer alan bileşenleri artsın, code snippet lar eklensin gibi bir çok istek oluşmuş ve bunlar yapılabilmiştir. Ancak bu noktada code snippet lar dışında bahsedilen diğer özellikler zaten yapılabiliyorken geliştiricilerin önceliğinden ötürü fazla göz önünde değillerdi. Biz de daha önce hazırlamış olduğumuz yazıları bu doğrultuda yönlendirerek beklentileri karşılamaya çalıştık. Şimdi ise MVC 'ten yeni beklentimiz *.RDLCuzantılı dosyaların MVC uygulamaların içerisinde görüntülenmesi için yapılması gereken işlemleri inceliyor olacağız. 

Geliştirecek olduğumuz uygulamayı Visual Studio 2008 ve .Net Framework 3.5 üzerinde geliştiriyor olacağız. Visual Studio 2008 üzerinde uygulama şablonunu  MVC 2 ile geliştireceğimizi düşündüğümüzde .Net sürümünün 3.5 SP1 olmasına dikkat etmeniz gerekmektedir. Zaten aksi bir durum söz konusu ile sisteminize MVC 2 sürümünü kuramayacak ve hata alacaksınızdır. Eğer ki Windows 7 kullanılıyor ve kurarken sorun yaşıyorsanız bu bağlantı yardımı ile sorununuzu çözebilir ve işlemlerinize sorunsuzca devam edebilirsiniz. 

Hazırlayacağımız örnek için boş bir MVC2 uygulama oluşturarak başlıyoruz. 

mak88_1 

Proje oluştuğuna göre veri tabanından verileri çekip kullanabilmek için uygulama üzerinde gerekli tanımlamaları yapmak gerekiyor. Ado.Net Entity Data Model yardımı ile veri tabanında yer alan nesneleri kolayca oluşturup kullanabileceğimiz için bu şablonu seçerek adımlara devam ediyoruz. 

mak88_2 

Veri tabanı bağlantısı için gerekli olan connection string oluşturulur. 

mak88_3 

Veri tabanı ile bağlantı için gerekli olan cümle oluşturulduktan sonra bundan yararlanarak Northwind veri tabanı içerisinde yer alan tablo, view ve sp leri görüntülüyor olacağız. Örneğimizde Customer tablosundan yararlanacağımız için sadece bu tablo seçilerek işlemi tamamlıyoruz. 

mak88_4 

Bir sonraki adım da RDLC raporu oluşturmak için Content dizininin içerisine Reports klasörünü oluşturuyor ve içerisine Report.rdlc 'i aşağıdaki şekilde ekliyoruz. 

mak88_5 

Eklemiş olduğumuz report şablonu arka plan bir veri yapısı ile çalışmaktadır. Bu dataset, entity model ya da herhangi bir generic koleksiyon olabilmektedir. Biz eklemiş olduğumuzNorthwind Entities içerisinde yer alan Customers tablosunda yararlanabilmek için Model katmanının içerisine Customer.cs 'i ekleyerek aşağıdaki kod bloğunu ekliyoruz. 

mak88_6 

[C#

using System.Collections.Generic; 
using System.Linq; 

namespace RDLC.Models 

    public class Customer 
    { 

        public static List<RDLC.Models.Customers> GetAllCustomers() 
        { 
            var entities = new NorthwindEntities1(); 
            var x = from c in entities.Customers 
                       select c; 
            return x.ToList(); 
        } 
    } 
}


Hazırlamış olduğumuz kullanıcı listesi getiren generic list 'i report şablonu üzerinde gösterip kullanabilmemiz gerekmektedir. Bunun için Data menüsünün altında yer alan ShowDataSource seçeneği yardımı ile kullanılabilecek olan veri modellerini görüntüleyebiliriz. 

mak88_7 

Not: Eğer ki data menüsünün altında Show Data Sources seçeneğini görüntüleyemediyseniz bağlantı üzerinden yapmanı gereken işlemleri bulaibilirsiniz. 

Raporu ekledikten sonra görüntülemek istediğimiz verileri Website Data Sources kısmından rapor ekranına sürükleyerek görüntülenmesi için gerekli olan işlemleri hazırlamış bulunuyoruz. Bu işlemler sonrasında bizim hazırlamış olduğumuz rapor tasarımı aşağıdaki gibi olmuştur. 

mak88_8 

Yapacağımız sıradaki işlem Controller katmanını oluşturup sonrasında bu katmandan yararlanacak olan View sayfasını oluşturmak ve kullanmak olacaktır. 

mak88_9 

[C#

using System.Web.Mvc; 

namespace RDLC.Controllers 

    public class HomeController : Controller 
    { 
        public ActionResult Index() 
        { 
            string welcomeMessage = "Northwind Müşteri Listesine Hoşgeldiniz"; 
            return View((object)welcomeMessage); 
        } 
    } 
}


Controller katmanını kullanarak Index() üzerinde sağ tıklama yaparak View sayfasının oluşturulması için gerekli olan işlemleri yapıyoruz. 

mak88_10 

[Markup

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<string>" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
        <title>Index</title> 
    </head> 
    <body> 
        <div> 
           <h2> 
               <%=Html.Encode(Model) %></h2> 
           <%=Html.ActionLink("Müşteri Listesi (PDF)","DetailsReport","Customers") %> 
        </div> 
    </body> 
</html>


Oluşturulan view 'i görüntülediğimizde istediğimiz sonucu elde etmiş olacağız. Ancak ActionLink içerisinde vermiş olduğumuz adrese yani DetailsReport controller 'ına yönlenmek istediğinde yolu bulamıyorum şeklinde bir hata verecektir ki bu olası bir durumdur. Çünkü henüz bu metodu oluşturmadık. 

mak88_11 
  
Şimdi rapor verilerini görüntüleyebilmek için gerekli olan işlemleri yapıyor olacağız. Bunun için ilk olarak projeye Microsoft.ReportViewer.WebForm DLL 'i ekleyerek başlıyoruz. 

mak88_12 

Raporu görüntüleyebilmek için gerekli DLL 'i projeye ekledikten sonra müşterilerin verilerini web sayfasında görüntüleyebilmek için yapacağımız işlemleri yapacağımız controller katmanını ekliyoruz. 

[C#]  

using System.Web.Mvc; 
using Microsoft.Reporting.WebForms; 
using RDLC.Models; 

namespace RDLC.Controllers 

    public class CustomerController : Controller 
    { 
        public ActionResult Index() 
        { 
            return View(); 
        } 

        public ActionResult DetailsReport() 
        { 
            LocalReport localReport = new LocalReport(); 
            localReport.ReportPath = Server.MapPath("~/Content/Reports/CustomerReport.rdlc"); 
            ReportDataSource reportDataSource = new ReportDataSource("Customers", Customer.GetAllCustomers()); 

            localReport.DataSources.Add(reportDataSource); 
            string reportType = "PDF"; 
            string mimeTpe; 
            string encoding; 
            string fileNameExtension; 

            string deviceInfo = "<DeviceInfo>" + 
                    " <OutputFormat>PDF</OutputFormat>" + 
                    " <PageWidth>8.5in</PageWidth>" + 
                    " <PageHeight>11in</PageHeight>" + 
                    " <MarginTop>0.5in</MarginTop>" + 
                    " <MarginLeft>1in</MarginLeft>" + 
                    " <MarginRight>1in</MarginRight>" + 
                    " <MarginBottom>0.5in</MarginBottom>" + 
                    "</DeviceInfo>"; 

            Warning[] warnings; 
            string[] streams; 
            byte[] renderedBytes; 

            renderedBytes = localReport.Render( 
                                       reportType, 
                                       deviceInfo, 
                                       out mimeTpe, 
                                       out encoding, 
                                       out fileNameExtension, 
                                       out streams, 
                                       out warnings); 
             // Oluşan rapor sayfa içerisinde görüntülenmek isteniyorsa aşağıdaki kod parçası kapalı olmalıdır. Eğer ki ayrı bir sayfada 
             // görüntülenmek istiyorsanız ise kod parçasını açmanız gerekmektedir. 
             //Response.AddHeader("content-disposition", "attachment; filename=NorthWindCustomers." + fileNameExtension); 

             return File(renderedBytes, mimeTpe); 
        } 
    } 
}


Nesne olarak oluşan veriler için gerekli işleme işlemleri yapıldıktan sonra Microsoft Report içerisinde gösterilme işlemini tamamlamış oluyoruz. Sonuç aşağıdaki gibidir. 

mak88_14 

Sonuç olarak bu yazımızda Asp.Net MVC 2 ile hazırlamış olduğumuz uygulamaların içerisinde Microsoft Report aracılığıyla nasıl raporlama yapabileceğimizi incelemeye çalıştık. 

Umarım sizler için yararlı olabilmiştir. 

Kaynak 
MSDN 

Turhal Temizer
 
info@turhaltemizer.com

www.turhaltemizer.com 

Makale:
Asp.Net MVC – Microsoft Report Yardımı ile Raporlama ASP.NET Turhal Temizer
  • Yazılan Yorumlar
  • Yorum Yaz
NİS
7
2011
Peki bu mvc yapısına ne kadar uygun ? .rdlc dosyasını eklemekle bir web formu eklemek arasında ne fark var ki ? mvc projesini bu şekilde manipüle etmek doğrumudur ? Yazı için teşekkürler.
MAY
12
2010
Microsoft Report yıllar olan bir teknoloji idi. Ancak VS2010 ile yetkinliğini SSRS 2008 oldukça fazla yaklaştırdılar. Gelecekte daha da öncelik verebilirler Microsoft Report 'a...
MAY
12
2010
SSRS (SQL Server Reporting Service) raporunun adı VS2010 ile Microsoft Report mu oldu ? http://msdn.microsoft.com/en-us/library/bb885185.aspx. Pazarlama dehası Microsoft. Yine eşeği boyamış :)
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor