ASP.NET ReportViewer

WEB projelerinde rapor alma önemli bir ihtiyaçtır. Bu işlem için ASP.NET Webforms projelerinde kullanabileceğimiz ReportViewer nesnesi mevcuttur. 

OgrenciBilgiDB adlı veritabanımızda OgrenciTBL ve NotlarTBL tablolarını oluşturalım. İki tablo öğrenci tablosunun Id ve notlar tablosunun Ogrid alanları ile ilişkilidir.

Evet Şimdi bir ASP.NET webforms projesi oluşturalım. Bu  projede şu yazımda paylaştığım class  yapısını kullanacağım. App_Code klasörünü oluşturup verilerm.cs dosyasını içine oluşturalım. Classın veriye bağlanması için Web.Config dosyasına aşağıdaki satırı ekleyiniz. Siz kendi bilgisayarınızda denerken Data Source bölümünü kendinize göre ayarlayınız. 

<connectionStrings>
    <add name="bag" connectionString="Data Source=ahmet\sqlexpress;Initial Catalog=OgrenciBilgiDB;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

Defaultt.aspx dosyamızın tasarımını şöyle yapalım; Mavi  ile belirtilen kısım Yazdır linki bizi yazdırma sayfasına yönlendirecek ve kaydın id değerini yazdırma sayfasına gönderecek.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        body {
            font: 10pt Calibri;
             }

        a {
            text-decoration: none;
          }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <td>Okul No</td>
                    <td>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
                    <td><asp:Button ID="Button1" runat="server" Text="Ara" OnClick="Button1_Click" /></td>
                </tr>
                <tr>
                    <td colspan="3">
                        <asp:Label ID="Label1" runat="server" Text=""></asp:Label></td>
                </tr>
            </table>
            <asp:Panel ID="Panel1" runat="server" Visible="false" Width="450">
              <fieldset>
              <legend>Ögrenci Bilgileri</legend>
              <asp:Repeater ID="Repeater1" runat="server">
                 <ItemTemplate>
                   <table>
                     <tr>
                     <td>Ad</td>
                     <td><%# BHarf(Eval("Ad").ToString()) %></td>
                     <td rowspan="5">
                     <img src='Resimler\<%#Eval("ResimYol") %>' width="100" height="120" />
                     <a href='Default2.aspx?Yaz=<%#Eval("Id") %>'>Yazdır</a></td>
                     </tr>
                      <tr>
                     <td>Soyad</td>
                     <td><%# BHarf(Eval("Soyad").ToString())%></td>
                      </tr>
                      <tr>
                      <td>Veli Adı</td>
                      <td><%# BHarf(Eval("VeliAd").ToString())%></td>
                       </tr>
                       <tr>
                       <td>Veli Telefonu</td>
                       <td><%#Eval("VeliTel")%></td>
                       </tr>
                       <tr>
                       <td>Adres</td>
                       <td><%#Eval("Adres")%></td>
                       </tr>
                      </table>
                    </ItemTemplate>
                 </asp:Repeater>
               </fieldset>
           </asp:Panel>
           <asp:Panel ID="Panel2" runat="server" Visible="false" Width="500">
           <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" Width="448" EmptyDataText="There are no data records to display." CellPadding="3" ForeColor="#333333" GridLines="Horizontal">
         <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
         <Columns>
         <asp:BoundField DataField="DersAd" HeaderText="Ders Adı" SortExpression="DersAd" />
         <asp:BoundField DataField="Y1" HeaderText="1.Yazılı" SortExpression="Y1" ItemStyle-HorizontalAlign="Center" />
         <asp:BoundField DataField="Y2" HeaderText="2.Yazılı" SortExpression="Y2" ItemStyle-HorizontalAlign="Center" />
         <asp:BoundField DataField="P1" HeaderText="1.Performans" SortExpression="P1" ItemStyle-HorizontalAlign="Center" />
         <asp:BoundField DataField="p2" HeaderText="2.Performans" SortExpression="p2" ItemStyle-HorizontalAlign="Center" />
         </Columns>
          <EditRowStyle BackColor="#999999" />
          <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
          <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
          <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
          <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
          <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
          <SortedAscendingCellStyle BackColor="#E9E7E2" />
          <SortedAscendingHeaderStyle BackColor="#506C8C" />
          <SortedDescendingCellStyle BackColor="#FFFDF8" />
          <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
      </asp:Panel>
      </div>
    </form>
</body>
</html>
Dafault.aspx.cs dosyamız ise şöyle;
 public string BHarf(string gelen)
 {
     gelen = gelen.ToUpper();
     return gelen;
 }
 verilerim db = new verilerim();
 protected void Button1_Click(object sender, EventArgs e)

 {
     string TxtOkulNo = TextBox1.Text;
     if (TextBox1.Text != "")

     {   //Öğrenci bilgisini repeater nesnesinde okul numarasına göre gösterdik.
         DataTable ogr = db.TabloGetir("SELECT * FROM OgrenciTBL WHERE OkulNo =" + TxtOkulNo );
         Repeater1.DataSource = ogr;
         Repeater1.DataBind();

         //Öğrencinin id sine göre ona ait notları görmek için Ogrid ile filtreledik.
         DataTable notlar = db.TabloGetir("SELECT * FROM NotlarTBL where Ogrid=" + ogr.Rows[0]["Id"]);
         GridView1.DataSource = notlar;
         GridView1.DataBind();

         // Repeater ve Gridview panel içinde olduğundan panelleri görünür yaptuk.
         Panel1.Visible = true;
         Panel2.Visible = true;

     }
     else
     {   //Text kutusuna veri girilmediği zaman hata mesajı verdirdik.
         Label1.Text = "Lutfen okul numarası giriniz.";
     }
 }
Ve sonuç;