Karabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com AJAX KULLANIMI



Benzer belgeler
Karabük Üniversitesi, Mühendislik Fakültesi... AJAX KULLANIMI

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME

BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME İŞLEMLERİNİN BİRLİKTE ANLATIMI

İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ

İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME

MASTER PAGE SAYFASI KULLANIMI

İNTERNET TABANLI PROGRAMLAMA- 11.ders FORM UYGULAMASI (DROPDOWN BİLGİ YÜKLEME, VALIDATION KONTROLLERI, PAREMETRELİ KAYIT YAPMA)

SINIF İÇİ UYGULAMA KODLARI

SAYFALAR ARASI LİNK VERME VE BİLGİ TAŞIMA YÖNTEMLERİ

VERİTABANINA BİLGİ KAYDEME, DÜZENLEME, LİSTELEME İŞLEMLERİ

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

GridView ve DetailsView kullanarak kayıt düzenlemek

Kitap Ekle linki tıklandığında, admin.aspx sayfamızın görüntüsü aşağıdaki şekilde olacaktır.

BİLGİLERİ GRIDVIEW DE GÖRÜNTÜLEME VE DÜZENLEME

ASP.NET Web Kontrolleri

İNTERNET TABANLI PROGRAMLAMA- 7.ders

1 Aralık 2011 / Perşembe

Response : Sunucunun istemciye veri yollamasını

Önce Access açıp,masaüstü ne, vt.mdb adlı veri tabanı dosyasını oluşturuyoruz. Kayıt türünü seçiyoruz

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

User Control : Standart bir kullanıcı arabirimi oluşturarak; bir uygulama içinde birden fazla. Siteye User Control Eklemek : 22 Mart 2012 / Perşembe

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

ASP.NET ile Bir Web Sitesi Oluşturma

Resimlerin üstüne yazı yazacağız. resimyukle.aspx sayfası oluşturuyoruz.

A- VERİTABANI BAĞLANTISINI HAZIR NESNE KULLANARAK YAPMA

VeriTabanı Uygulamaları

NAVĠGATĠON (SĠTE GEZĠNME) KONTROLLERĠ

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Örnek : TextBox1,RangeValidator,Button,Label girelim aralığında değer girilmesini istiyoruz. Label1.Text=TextBox1.Text ;

24 Kasım 2011 / Perşembe

PROGRAMLAMA DERSİ 1. İNTERNET

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

JSF Melih Sakarya. Java Server Faces Facelet

NOT: VERİTABANINDAKİ TABLOLARI OLUŞTURMAYI DA UNUTMAYACAĞIZ.

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 9 Tema Kullanımı

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 2 Asp.NET Sunucu Kontrolleri

ADO.NET VERİTABANINA BAĞLANTI. Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA 1

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Süleyman Demirel Üniversitesi Bilgisayar Teknolojisi ve Programlama Bölümü ASP.NET 2.0 AJAX. Yazarlar. Mesut ERDEMİR (

ASP.NET DERS NOTLARI

VERİTABANI NEDİR? ADO.NET

C#.Net & Linq (Language Integrated Query)

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

İNTERNET TABANLI PROGRAMLAMA- 3.ders

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Burak Kıymaz JAVA FX

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

Şekil 2.1. Bu bölümde ASP.Net platformumuzu açtığımızda Toolbox penceresindeki Standart bölümündeki kontrollerden bahsedeceğiz.(şekil 2.2) Şekil 2.

BİLİŞİM TEKNOLOJİLERİ

jquery kütüphanesini sayfaya eklemek için iki yöntem vardır. 1. Direkt jquery nin sitesinden ekleme

Yeni site açıp, masa üstündeki vt.mdb dosyasını sitemize ekliyoruz ve a bağlanıp 1 Mart tarihli sayfayı açıyoruz

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Yeni Web Sitesi Oluşturma: Visual Studio 2012 açılır. File>New>Web Site>C#-Asp Empty Site

Görsel Programlama (Visual Programming)

İNTERNET TABANLI PROGRAMLAMA- 13.ders A-GRIDVIEW, DETAILSVIEW, ACCESSDATASOURCE NESNELERİ İLE BİLGİ GÖRÜNTÜLEME

CetaSoft Ofis E-Ticaret Modülü ile Sunulan Web Servisleri

«BM364» Veritabanı Uygulamaları

LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme

FORM VE VALİDATION (Doğrulama) KONTROLLERI ÖRNEĞİ

2-Hafta Temel İşlemler

Nesneye Dayalı Programlama

12 Ocak 2012 / Perşembe

HSancak Nesne Tabanlı Programlama I Ders Notları

İNTERNET TABANLI PROGRAMLAMA

T.C. KARABÜK ÜNİVERSİTESİ TEKNİK EĞİTİM FAKÜLTESİ BİLGİSAYAR SİSTEMLERİ ÖĞRETMENLİĞİ WEB TEKNOLOJİLERİ KONU : E-TİCARET SİTESİ LİNQ TO SQL

WEB FORMLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

4. Bağlantı (Köprü) Oluşturma

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

Kullanım Kılavuzu

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

TARİHÇE. Versiyon Tarih Düzenleyen Açıklama Engin DURMAZ İlk versiyon

VISILABS SEGMENT KURULUM KILAVUZU

Ders 8: Metotlar. barisgokce.com

İNTERNET TABANLI PROGRAMLAMA

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Kullanmakta olduğunuz tarayıcınızın (internet explorer, firefox, chrome vs.) açınız ve adres çubuğunuza adresini yazınız.

HTML 4. Bölüm. Doç. Dr. İsmail Rakıp Karaş Dersin Course Page:

İNTERNET TABANLI PROGRAMLAMA- 3.ders

JavaScript Örnekleri PDF


BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

Basit bir web uygulaması

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

Android Ders Notları

Sağ Tıkla. 5 Ocak 2012 / Perşembe. Yeni bir site açıyoruz. File New Web Site Browse yeni klasör ocak5persembe OK

Görsel Programlama (Visual Programming) 2.Hafta

VISUAL C#.NET. CONSOLE EKRANINA YAZI YAZDIRILMASI (using System Kullanılarak Yapılan Uygulama) CONSOLE DERLENMESİ= Debug / Start Without Debugging

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

WEB FORM ELEMANLARI. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Programlama Dilleri 3

Google Search API ile ajax arama

ORT3167 İnternet Programcılığı 1 Ders1-2. Öğr. Grv. Aybike ŞİMŞEK

Karabük Üniversitesi, Mühendislik Fakültesi...

Transkript:

AJAX KULLANIMI Web sayfaları çalışırken Server a her gidişte yeni sayfanın tüm bilgileri yeniden yüklenir. Bu durum hem serverdan alınan bilgilerin fazla olmasını (dolayısı ile download trafiğini artırır) hemde sayfanın görüntülenme zamanını uzatır. Oysa çoğunlukla her sayfa yenilemede sayfa üzerindeki çok az bir kısmın bilgisinin değişmesi istenir. Bunu sağlamak için Ajax kullanılır. Ajax ı sayfamızda kullanabilmek için önceklikle bu işleri kontrol için ScriptManager nesnesinin sayfamızda olması gerekir. Bu nesneler Ajax komut grubu içinde bulunmaktadır. <asp:scriptmanager ID="ScriptManager1" runat="server"> </asp:scriptmanager> Sayfanın tamamı yerine sadece ilgili nesne üzerindeki bilgilerin güncellemek için UpdatePanel etiketi kullanılır. Yani güncelleme işlemi bu panel içindeki nesnelerde gerçekleştirilir. Sayfada bulunan bu panelin dışındaki nesnelerin içindeki bilgiler yeniden okunmaz. <asp:updatepanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:label ID="Label2" runat="server"></asp:label> <asp:button ID="Button1" runat="server" onclick="button1_click" Text="Button" /> </asp:updatepanel> </ContentTemplate> Ajax kullanımı ile ilgili olarak aşağıdaki örnekleri inceleyelim. 1

AJAX ÖRNEK 1: DEFAULT.ASPX <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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>untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:scriptmanager ID="ScriptManager1" runat="server"> </asp:scriptmanager> <asp:label ID="Label1" runat="server"></asp:label> <asp:updatepanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:label ID="Label2" runat="server"></asp:label> <asp:button ID="Button1" runat="server" onclick="button1_click" Text="Button" /> </div> </form> </body> </html> </ContentTemplate> </asp:updatepanel> DEFAULT.ASPX.CS 2

public partial class _Default : System.Web.UI.Page Label1.Text = DateTime.Now.ToString() ; //Burayı güncellemez çünkü label1 Update panelin içinde degildir. Label2.Text = DateTime.Now.ToString(); //buton ve label2 update panelin içinde olduğu için burasını her tıkladığımızda günceller. Dikkat sayfa güncellenmese bile Load olayının içindeyken burayı güncelliyebiliyor. protected void Button1_Click(object sender, EventArgs e) Not: Eğer buton UpdatePanelin dışında olursa Yine güncelleme yaptırabiliriz. Bu durmda Update Panelin Triggers (tetikleyiciyi) ayarlamalıyız. Aşağdaki şekilde yapabiliriz. 3

AJAX ÖRNEK 2: Ajax kodu yazmadan basit bir şekilde sayfa içerisindeki bilgilerin güncellenemesi Burada Buton ve Label 1 Update panelin içerisindedir. Label 2 ise dışındadır. Butona tıkladığımızda Serveraa sayfanın tamamı gitmiyor sadece Update panelin içerisi gidiyor ve dolayısıyla sadace orası güncelleniyor. Sebebi olaya sebep olan butona update panelin içerisinde olduğu için sayfanın tamamını göndermiyor. (Acaba buton update panelin dışında olsa sayfanın tamamı gidermi?) Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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>untitled Page</title> </head> <body> <form id="form1" runat="server"> <p> <asp:label ID="Label2" runat="server" Text="Label"></asp:Label></p> <p> <asp:scriptmanager ID="ScriptManager1" runat="server"> </asp:scriptmanager> </p> <fieldset> <legend style="border: 1px solid #0000FF">FieldSet- UpdatePanel içerisinde (Ajax'ın güncelleme paneli)</legend> <asp:updatepanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:label ID="Label1" runat="server" Text="Label"></asp:Label> 4

<asp:button ID="Button3" runat="server" Text="Button" /> <hr /> </ContentTemplate> </asp:updatepanel> </fieldset> </form> </body> </html> Default.aspx.cs public partial class _Default : System.Web.UI.Page Label1.Text = "Label1- Ġçerideki butona tıklandı " + DateTime.Now.ToString(); Label2.Text = "Label2- Ġçerideki butona tıklandı " + DateTime.Now.ToString(); NOT: Bu örnekte butonu Update panelin dışına aldığımızda sayfanın tamamı servera gidecektir. Bu sebeple load kısmındaki kodlar sebebiyle her iki label ıda güncelleyecektir. Sayfanın servera gidip gitmediğini Browserın altındaki zaman göstergecinden anlayabiliriz. NOT 2: Bir önceki örnekte buton Update panelin içindeyken Ajax güncellemesi yapabiliyorduk. Ama her zaman butona Update panelin içerisinde olamaz. Sayfanın her hangi bir yerinde bulunmak zorunda olabilir. Bu durumda ne yapacağız? Bu durumda Update panel ile Buton arasında bir köprü kurmalıyız. Bu işlem için Update Panelin Triggers (tetikleyici) ayarları yapılmalıdır. Burada hangi nesnelerin hangi olayda update paneli güncelleyeceği belirlenir. 5

AJAX ÖRNEK 3: Master Sayfadan Linklere Tıklayarak İçerik Sayfası içindeki UpdatePaneli (Ajax Panelini) güncelleme yapma 1) ScriptManager ı Master Sayfanın içine ekleyin. 2) UpdatePanel i İçerik sayfasına ekleyin. 3) UpdatePanel inde içerisine görüntüleyeceğiniz kontrolleri ekleyin. DEFAUL.ASPX (İçerik sayfası) <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %> <asp:content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> Burası Content (Ġçerik) sayfası <asp:updatepanel id="updatepanel1" runat="server" UpdateMode="Conditional"> 6

<contenttemplate> <fieldset> <legend>updatepanel (Ajax'ın güncelleme paneli)</legend> <asp:label ID="Label1" runat="server" Text="Label"></asp:Label> </fieldset> </contenttemplate> </asp:updatepanel> </asp:content> DEFAULT.ASPX.CS using System.Collections; public partial class _Default : System.Web.UI.Page MASTERPAGE.MASTER <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>untitled Page</title> <asp:contentplaceholder id="head" runat="server"> </asp:contentplaceholder> </head> <body> <form id="form1" runat="server"> <div> Burası Master Sayfa 7

<asp:button ID="Button2" runat="server" Text="Link 2" onclick="button2_click" /> <asp:button ID="Button1" runat="server" Text="Link 1" onclick="button1_click" /> <hr /> <asp:scriptmanager ID="ScriptManager1" runat="server"> </asp:scriptmanager> <asp:contentplaceholder id="contentplaceholder1" runat="server"> </asp:contentplaceholder> </div> </form> </body> </html> MASTERPAGE.MASTER.CS using System.Collections; public partial class MasterPage : System.Web.UI.MasterPage //Buton 1 ve 2 ile oluģturulacak ajax kodlarının senkronize çalıģacağını belirliyor ScriptManager1.RegisterAsyncPostBackControl(Button1); ScriptManager1.RegisterAsyncPostBackControl(Button2); protected void Button1_Click(object sender, EventArgs e) string TiklananButonID = ((Control)sender).ID; //Butonun adını alıyor.. LinkBagliGuncelleYap(TiklananButonID); protected void Button2_Click(object sender, EventArgs e) string TiklananButonID = ((Control)sender).ID; LinkBagliGuncelleYap(TiklananButonID); public void LinkBagliGuncelleYap(string GelenID) switch (GelenID) 8

case "Button1": ((Label)ContentPlaceHolder1.FindControl("Label1")).Text = "Link 1 e Tıklandı " + DateTime.Now.ToString(); break; case "Button2": ((Label)ContentPlaceHolder1.FindControl("Label1")).Text = "Link 2 ye Tıklandı " + DateTime.Now.ToString(); break; ((UpdatePanel)ContentPlaceHolder1.FindControl("UpdatePanel1")).Update(); NOT: Master Sayfadan İçerik sayfası Ajax ile güncellenirken şu 3 noktaya dikkat edin. 1) ScriptManager master sayfaya konulursa tüm içerik sayfaları için kullanabiliriz. 2) Master sayfadaki herhangi bir nesneye tıklanıldığında olayın gerçekleşmesini istiyorsak, Tıklayacağımız bu nesneleri ScriptManegar a aşağıdaki kod ile MasterPagein load ında tanıtmalıyız. ScriptManager1.RegisterAsyncPostBackControl(Button1); 3) Butona tıkladığımızda gerçekleşmesini istediğimiz kodları yazdıktan sonra hemen altında şu satırın olmasına dikkat edin. ((UpdatePanel)ContentPlaceHolder1.FindControl("UpdatePanel1")).Update(); 4) Güncelleme işlemleri her zaman için değil özel durumlar için gerçekleşeceğini belirtmek için İçerik sayfasındaki Updatepanel seçilip onun UpdateModu=Conditional seçilmeli. 9

AJAX ÖRNEK 4: (Önemli) (HATALI ÇALIŞMIYOR) Master Sayfada Menu nesnesi bulunuyor. Menüye tıklayınca içerik sayfalarını ContentPlaceHolder kısmına yüklüyor. Fakat bu esnada yüklenme Ajax yapısıyla yapılmaktadır. Bu işlem için kritik maddeler şunlardır. a) ScriptManager Master sayfaya konulacak b) Updatepanel Mastersayfanın içerisine konulmalı. Böylece içerik sayfaları Updatepanelin içerisinde açılmış olacaktır. Updatepanel ile Menü arasındaki Triggers işlemi aşağıdaki şekilde ayarlanmalıdır. Menünün Databinding olayı kullanılmalı. Sayfalar çalışırken Menünün ID si ile ilgili bir problem meydana gelmektedir. Bu problemi aşabilmek için MasterSayfanın içerisine aşağıdaki kodlar eklenmeli (The reason for this message is that Controls in Content pages of Master pages do not actually have their original ID s. For example, although Menu1 s ID is Menu1 it s actual UniqueID is something like ctl00$menu$menu1. The real problem is that you do not know this until runtime. You could add a AsyncPostBackTrigger() manually to the UpdatePanel.Triggers collection at runtime in the OnInit() function using static strings, but this is not very maintainable. The following method simply looks through the triggers on the UpdatePanel and for the one that ends with the ID of the Menu1 control it simply changes the trigger ControlID to the UniqueID of Menu1 as runtime. This MUST happen in the OnInit() method of the Content Page. Although you have to hardcode the Menu1 item (and any other trigger controls), it means that you can change the Menu s ID or even the EventName without having to touch the code.) protected override void OnInit(EventArgs e) base.oninit(e); foreach (AsyncPostBackTrigger apbt in UpdatePanel1.Triggers) if (Menu1.UniqueID.EndsWith(apbt.ControlID)) apbt.controlid = Menu1.UniqueID; 10

MasterPage.master <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>master SAYFA</title> <asp:contentplaceholder id="head" runat="server"> </asp:contentplaceholder> </head> <body> <form id="form1" runat="server"> <div> <asp:scriptmanager ID="ScriptManager1" runat="server"> </asp:scriptmanager> Master Sayfa <asp:menu ID="Menu1" runat="server"> </asp:menu> <asp:updatepanel ID="UpdatePanel1" runat="server" > <ContentTemplate> <fieldset> <legend>updatepanel (Ajax'ın güncelleme paneli, Burası master sayfa)</legend> runat="server"> <asp:contentplaceholder id="contentplaceholder1" </asp:contentplaceholder> </fieldset> </ContentTemplate> <Triggers> <asp:asyncpostbacktrigger ControlID="Menu1" EventName="DataBinding" /> </Triggers> </asp:updatepanel> </div> </form> </body> </html> MasterPage.master.cs using System.Collections; 11

public partial class MasterPage : System.Web.UI.MasterPage if (!IsPostBack) MenuItem Eleman = new MenuItem(); Eleman = new MenuItem(); Eleman.Text = "Ana Sayfa"; Eleman.Value = "AnaSayfa"; Menu1.Items.Add(Eleman); Eleman = new MenuItem(); Eleman.Text = "Ürünler"; Eleman.Value = "Urunler"; Menu1.Items.Add(Eleman); protected void Menu1_MenuItemClick(object sender, MenuEventArgs e) switch (e.item.value) case "AnaSayfa": e.item.navigateurl = "Default.aspx"; return; case "Urunler": e.item.navigateurl = "Default2.aspx"; return; protected override void OnInit(EventArgs e) base.oninit(e); foreach (AsyncPostBackTrigger apbt in UpdatePanel1.Triggers) if (Menu1.UniqueID.EndsWith(apbt.ControlID)) apbt.controlid = Menu1.UniqueID; Default.aspx <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %> <asp:content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> Ġçerik Sayfası, burası Update Panelin içerisinde Sayfa1 <asp:label ID="Label1" runat="server" Text="Label"></asp:Label> 12

</asp:content> Default.aspx.cs using System.Collections; public partial class _Default : System.Web.UI.Page Label1.Text = "Ġçerik sayfasındaki label Sayfa1" + DateTime.Now; Default2.aspx <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %> <asp:content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> </asp:content> Ġçerik Sayfası, burası Update Panelin içerisinde Sayfa2 <asp:label ID="Label1" runat="server" Text="Label"></asp:Label> Default2.aspx.cs using System.Collections; public partial class Default2 : System.Web.UI.Page 13

Label1.Text = "Ġçerik sayfasındaki label Sayfa2" + DateTime.Now; AJAX ÖRNEK 5: Master Sayfadan butonlara tıklayarak Içerik sayfası içindeki Update Panel in güncellenmesinin yapılması. Panel içindeki takvimin günlerini artırıp azaltma işlemi. MASTERPAGE.MASTER <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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 id="head1" runat="server"> <title>master Sayfadan Içerik Sayfadaki Update Panel'i kullanma </title> </head> <body> <form id="form1" runat="server"> <div> Master Page (Master Sayfa) <hr /> <asp:button ID="Button2" runat="server" Text="Eksi (-)" onclick="button2_click" /> <asp:button ID="Button1" runat="server" Text="Artı (+)" onclick="button1_click" /> <hr /> 14

</div> </form> </body> </html> <asp:scriptmanager ID="ScriptManager1" runat="server"> </asp:scriptmanager> <asp:contentplaceholder id="contentplaceholder1" runat="server"> </asp:contentplaceholder> MASTERPAGE.MASTER.CS using System.Collections; public partial class MasterPage : System.Web.UI.MasterPage public Int32 Hesapla get return (Int32)(ViewState["Hesapla"]?? 0); set ViewState["Hesapla"] = value; ScriptManager1.RegisterAsyncPostBackControl(Button1); ScriptManager1.RegisterAsyncPostBackControl(Button2); protected void Button1_Click(object sender, EventArgs e) switch (((Control)sender).ID) case "Button1": this.hesapla = this.hesapla + 1; break; case "Button2": this.hesapla = this.hesapla - 1; break; ((UpdatePanel)ContentPlaceHolder1.FindControl("UpdatePanel1")).Update(); 1Calendar cal = ((Calendar)ContentPlaceHolder1.FindControl("Calendar1")); 15

0, 0)); DateTime newdatetime = DateTime.Today.Add(new TimeSpan(Hesapla, 0, cal.selecteddate = newdatetime; protected void Button2_Click(object sender, EventArgs e) switch (((Control)sender).ID) case "Button1": this.hesapla = this.hesapla + 1; break; case "Button2": this.hesapla = this.hesapla - 1; break; ((UpdatePanel)ContentPlaceHolder1.FindControl("UpdatePanel1")).Update(); Calendar cal = ((Calendar)ContentPlaceHolder1.FindControl("Calendar1")); DateTime newdatetime = DateTime.Today.Add(new TimeSpan(Hesapla, 0, 0, 0)); cal.selecteddate = newdatetime; ****************************** Not: public Int32 Hesapla Bu kodlarla ilgili olarak Ģu yazmaktadır.( Add the following code to create a public property named Offset in the master page that tracks the difference between today's date and the selected date. ) Not: Aşağıdaki kodlar için şu açıklama verilmiştir (Add the following code in the handler to register the two buttons as asynchronous postback controls:) ScriptManager1.RegisterAsyncPostBackControl(Button1); ScriptManager1.RegisterAsyncPostBackControl(Button2); DEFAULT.ASPX <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %> <%@ MasterType VirtualPath="MasterPage.master" %> <asp:content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> Content Page (Ġçerik Sayfası) <asp:updatepanel id="updatepanel1" runat="server" UpdateMode="Conditional"> <contenttemplate> <fieldset> <legend>updatepanel (Ajax'ın güncelleme paneli)</legend> 16

<asp:calendar id="calendar1" runat="server" onselectionchanged="calendar1_selectionchanged"></asp:calendar> </fieldset> </contenttemplate> </asp:updatepanel> </asp:content> DEFAULT.ASPX.CS using System.Collections; public partial class Default2 : System.Web.UI.Page DateTime newdatetime = DateTime.Today.Add(new TimeSpan(Master.Hesapla, 0, 0, 0)); Calendar1.SelectedDate = newdatetime; protected void Calendar1_SelectionChanged(object sender, EventArgs e) DateTime selecteddate = Calendar1.SelectedDate; Master.Hesapla =((TimeSpan)Calendar1.SelectedDate.Subtract(DateTime.Today)).Days; 17

MASTER SAYFADAN BİR BUTONA TIKLAYARAK İÇERİK SAYFASINDAKİ BİLGİLERİN DEĞİŞTİRİLMESİ ÖRNEK MasterPage.master <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>untitled Page</title> <asp:contentplaceholder id="head" runat="server"> </asp:contentplaceholder> </head> <body> <form id="form1" runat="server"> <div> <asp:button ID="Button1" runat="server" Text="BURASI MASTER SAYFADAKĠ BUTON" onclick="button1_click" /> <asp:contentplaceholder id="contentplaceholder1" runat="server"> </asp:contentplaceholder> </div> </form> </body> </html> MasterPage.master.cs using System.Collections; public partial class MasterPage : System.Web.UI.MasterPage 18

protected void Button1_Click(object sender, EventArgs e) ((Label)ContentPlaceHolder1.FindControl("Label1")).Text=((TextBox)ContentPl aceholder1.findcontrol("textbox1")).text; Default.aspx <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %> <asp:content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <title> BURASI ICERIK SAYFASININ BAġLIĞI</title> </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> </div> <div style="background-color: #99CCFF"> <asp:textbox ID="TextBox1" runat="server"></asp:textbox> <asp:label ID="Label1" runat="server" Text="Label"></asp:Label> </asp:content> Default.aspx.cs using System.Collections; public partial class _Default : System.Web.UI.Page 19