Bahadır Bekeç

www.bahadirbekec.com

SQL Reportin Service

clock Mayıs 14, 2009 09:10 by author Bahadır Bekeç

Reporting servis ile oluşturulan raporu programatik olarak render etmek:
Parametreler:

  1. FileFormat: XML, NULL, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, EXCEL, HTMLOWC
  2. reportPath: /MyReportPath/MyReport
  3. Parameters: Raporun aldığı parametreler.
  4. NewFilePathAndName: FileFormat ile belirttiğimiz tip ile render edilen raporu kaydetme konumu ve adı.

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.IO
Imports reportingservice 'Reportin Service web referansi


Public Class ReportingServiceHelper

    
Public Shared Sub Render(ByVal FileFormat As String, _
                            
ByVal reportPath As String, _
                            
ByVal parameters() As ParameterValue, _
                            
ByVal NewFilePathAndName As String)

        
Dim rs As New reportingservice.ReportingService
        rs.Credentials 
System.Net.CredentialCache.DefaultCredentials
        rs.Credentials 
= New System.Net.NetworkCredential("UserName", _
                                                  
"Password""Domain")

        
' Render parametreleri
        
Dim result As Byte() Nothing
        
Dim historyID As String = Nothing
        
Dim devInfo As String = "<DeviceInfo><Encoding>ISO 8859-8" & _
                                "</Encoding></DeviceInfo>"
'Türkçe için
       

        
Dim credentials As DataSourceCredentials() Nothing
        
Dim showHideToggle As String = Nothing
        
Dim encoding As String = Nothing

        
Dim mimeType As String = Nothing
        
Dim warnings() As reportingservice.Warning Nothing
        
Dim reportHistoryParameters As ParameterValue() Nothing
        
Dim streamIDs As String() Nothing
        
Dim sh As New SessionHeader()
        rs.SessionHeaderValue 
sh

        rs.RequestEncoding 
System.Text.Encoding.UTF8'Türkçe için


        
result rs.Render(reportPath, FileFormat, historyID, devInfo, parameters, _
                          credentials, showHideToggle, encoding, mimeType, _
                   reportHistoryParameters, warnings, streamIDs)


        sh.SessionId 
rs.SessionHeaderValue.SessionId

        
Dim stream As FileStream File.Create(NewFilePathAndName, result.Length, _
                                               FileOptions.RandomAccess)
        stream.Write(result, 
0, result.Length)
        stream.Close()

    
End Sub
End Class

 



Global.asax Application_Error

clock Şubat 21, 2009 15:59 by author Bahadır Bekeç

    Global.asax

    void Application_Error(object sender, EventArgs e)
    {
          
//  Code that runs on application shutdown

        
Exception ex Server.GetLastError().GetBaseException();

         
// olusumum tarihini getir
        
string dateTime DateTime.Now.ToLongDateString() + ", at "
                            
+ DateTime.Now.ToShortTimeString();

        string 
errorMessage "Exception generated on " + dateTime;
        
// hatanin olustusgu url
        
System.Web.HttpContext context System.Web.HttpContext.Current;
        
errorMessage +"\n\n Page location: " + context.Request.RawUrl;      
        
errorMessage +"\n\n Message: " + ex.Message;
        
errorMessage +"\n\n Source: " + ex.Source;
        
errorMessage +"\n\n Method: " + ex.TargetSite;
        
errorMessage +"\n\n Stack Trace: \n\n" + ex.StackTrace;
        string 
from Configuration.AdminMail;
        string 
to Configuration.ErrorMailAddress;
        string 
subject " Error Report";
        string 
body errorMessage;
        
SendMail(from, to, subject, body);
            
        
Server.ClearError();
        
Response.Redirect("GenericErrorPage.aspx"true);
    
}


Delete Confirm

clock Kasım 21, 2008 19:00 by author Bahadır Bekeç

     Gridview üzerinde kayıt eklemek, kayıt silme veya kayıt düzeltme işlemleri yapmak isteyebiliriz. Mesela bir alış-veriş sitemiz var ve sepete eklenen 3 üründen birisini yanlışlıkla ekledik ve silmemiz gerekiyor ama yanlış ürünü silersek tekrar ürünler sayfasına gidip eklememiz gerekecek bu da bazılarına göre sıkıcı bir iş olabilir. Ziyaretcinin yanlış birşeyler yapmasını engellemek için; daha kullanışlı, daha user-friendly bir sistem kurmamız gerekmekte. 

       Grid üzerinde bulunan kayıtların her birini sepetimizde bulunan birer ürün olarak farzedelim. Yanlışlıkla ekledigimiz ürünün Del butonu yerine yanlışlıkla bir sonraki ürünün Del butonuna bastık, eğer "Silmek istediğinizden emin misiniz?" sorusunu sormadan direk kaydın silinmesine izin vermiş olsaydık, ziyaretcinin tekrar ürünler sayfasına gidip o ürünü eklemesi gerekecekti. 
Grid üzerinde Del butonuna bastoğımız zaman açılan confirm penceresi.  

 

Gride ekledigimiz  TemplateField içerine yerleştirdiğimiz butonun onclick olayına " ShowConfrim " isimli function yazıyoruz. 
           
  1: <asp:TemplateField> 
  2:  <ItemTemplate> 
  3:   <input id="btnDel" type="button" value="Del" onclick=<%# "javascript:ShowConfrim('" + Eval("Id").ToString() + "')"  %> /> 
  4:  </ItemTemplate> 
  5: </asp:TemplateField>
  6: 

ShowConfrim() Function: 
  1: function ShowConfrim (Id){ 
  2:    if (confirm(Id + ' Id  li kaydı silmek istediginizden emin misiniz?')){ 
  3:         DoPostBack(Id); 
  4:    } 
  5: } 
    function DoPostBack (Id){
           var oHiddenField = document.getElementById('<%= HiddenField1.ClientID %>');
           oHiddenField.value=Id;
          
            <%= Page.ClientScript.GetPostBackEventReference(btnDel, "") %>
       }   
        Protected Sub btnDel_Click (ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDel.Click
        Dim Id As String = HiddenField1.Value
        Dim row As DataRow = _Data.Select("id='" & Id & "'")(0)
        row.Delete()

        GridView1.DataBind()
    End Sub

 



Ajax

clock Temmuz 12, 2008 07:09 by author Bahadır Bekeç

    İnternette elimizin altında onlarca hazır JavaScript Fremework bulunmakta. Bu frameworkler belkide de en çok alkış alanı :) Prototype.
Ben bu yazım da prototype' ın Ajax methodlarına değineceğim. Bunun için ufak bir örnek hazırladım.
Senoryomuz şu şekilde;
     Ekrandan iki adet textbox olacak ve biz bu textboxlara iki adet sayı girip Topla butonuna basacağız. Sonucu ise prototype Ajax methodları yardımı ile kendi sayfamıza getirecegiz.

 



Default.aspx :

    <script src="prototype-1.6.0.2.js" language="JavaScript" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
    function Hesapla(){
        var Sayi1 = $('TextBox1');
        var Sayi2 = $('TextBox2');
        Topla(Sayi1.value,Sayi2.value);       
    }
   
    function Topla(Sayi1,Sayi2) {
      var url = "ToplaVeGonder.aspx?Sayi1=" + Sayi1 + "&Sayi2=" + Sayi2 ;
      var AjaxObjesi = new Ajax.Request(
            url,
            {
                  method: 'get',
                  onFailure: HataOlustu,
                  onComplete: Sonuc
                  });}
      var Sonuc = function(orjinalRequest) {
      var islemCiktisi = orjinalRequest.responseText;
      $('Sonuc').innerHTML = ' Sonuc :' + islemCiktisi;
      }
      var HataOlustu = function(orjinalRequest) {
          alert('Hata ' + orjinalRequest.status + ' -- ' + orjinalRequest.statusText);
      }
    </script>

ama asıl işi yapacak olan sayfamız ToplaVeGonder.aspx sayfasıdır.

ToplaVeGonder.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        int Sayi1 = int.Parse(Request.QueryString["Sayi1"].ToString());
        int Sayi2 = int.Parse(Request.QueryString["Sayi2"].ToString());

        this.Sonuc.InnerText = (Sayi1 + Sayi1).ToString();
    }


İşin aslı şu; Ajax.Request methodu ile ToplaVeGonder.aspx sayfasına iki adet querystring den parametre gönderiyoruz (var url = "ToplaVeGonder.aspx?Sayi1=" + Sayi1 + "&Sayi2=" + Sayi2 ;
) bu parametreleri Request.QueryString["Sayi1"] ve Request.QueryString["Sayi2"] ile alıp Toplama işlemini yaptıktan sonra sonucu ekrana yazdırıyoruz ve elimizde html satırları oluşuyor bu html satırlarınıda giriş ekranımızdaki divin içerisine innerHtml diyerek yazdırıyoruz.


 

 



Dynamic Inline JavaScript Form Validation

clock Mayıs 11, 2008 17:56 by author Bahadır Bekeç

    Tamamen JavaScript ve css ile oluşturulmuş güzel bir çalışma



Kaynak kodlarını inceledigimizde görülecegi üzere validationun alt yapısı tamamen regex ile oluşturulmuş. Bizde uygulamızın senaryosuna göre regex oluşturabilir ve istegimiz kalıba uygun verilerin girilmesine izin verebiliriz. 

inlineMsg('name','You must enter your name.',2);


Kaynak kodlar ve Ayrıntılı bilgi için leigeber

 

 



Bahadır Bekeç

    Bahadır Bekeç 1985, Kırıkkale doğumlu. 2006 yılına kadar hayatına Kırıkkale' de devam etti. İlk ve orta öğrenimini Kırıkkale Dede Korkut İlköğretim Okulu’ nda tamamladı.

Devamı

Son Yazılar

Sign in