Reporting servis ile oluşturulan raporu programatik olarak render etmek:
Parametreler:
- FileFormat: XML, NULL, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, EXCEL, HTMLOWC
- reportPath: /MyReportPath/MyReport
- Parameters: Raporun aldığı parametreler.
- 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
d960576f-7687-4dd2-9895-f0f8e760562b|0|.0
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);
}
3684af72-325a-45ae-b575-54b1ac09dfb5|1|5.0
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.
|

|
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
|

|
4df4f96d-8b6d-4f37-b1b7-1037a1ca9469|0|.0
İ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.
80b4258b-e67d-447b-b836-163dd4a5af15|0|.0
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

0383a99a-380a-4645-a474-1660c1280621|0|.0