[WebMethod]
public static string GetStokMiktari(string urunKod)
{
return urunKod;
}
Yazdigimiz bu webmethod'u okumak icin su js fonksiyonunu yazariz.
function CallGetStokMiktari() {
var ctrl = document.getElementById('TextBox1');
PageMethods.GetStokMiktari(ctrl.value,CallBackGetStokMiktari);
}
GetStokMiktari methodumuz, ilk parametre olarak TextBox'in degerini alirken (html tabanli programlamada textbox'in text'inden soz edemeyiz,textbox'in value'si olur. Aslinda textbox'da input type="button" 'a donusur.)
Simdi de TextBox'dan okudugumuz degeri, Label'a yazan JavaScript fonksiyonunu yazalim;
function CallBackGetStokMiktari(result) {
var ctrl = document.getElementById('Label1');
ctrl.innerText = result;
}
TextBox'dan okunan verinin Label'a aktarilmasi icin bir button koyalim, buttona tiklaninca label'in ici dolsun. Yapmamiz gereken sadece, buttonun onclickine yazdigimiz js fonk'unun adini vermek olacak.
input id="Button2" type="button" value="button" onclick="CallGetStokMiktari()" />
Kodumuzu derlediğimiz zaman, calismadigini gorecegiz. Bunun nedeni, ScriptManager arka planda bazi ozel js fonksiyonlarini yazmamasi. Bunun nedeni, bizim WebMethod yazdigimizi bilmemesi. Eski senaryoda biz UpdatePanel surukleyerek ona belirtmis oluyorduk, fakat simdi sadece kodlarla kendimiz yazdigimizdan, ozellikle ScriptManager'e soylememiz gerekir bizim WebMethod yazdigimizi.ScriptManager'imize su kodu eklersek sorun kalmayacaktir.
asp:ScriptManager EnablePageMethods="true" ID="ScriptManager1" runat="server">
asp:ScriptManager>
Yazdığımız js fonksiyonları ile birlikte, bize sadece textbox,a girilen değer gelecektir. Ne sayfa post edilecektir, ne de viewstate içerisinde updatepanel vs... gibi kontrollerin kodları gelecektir. Böylece sayfa açılımı ve performans son derece artacaktır. UpdatePanel kullanarak 600-700 mblık veri yükleme işlemi, şimdi sadece 10-15 mb civarında olacaktır.Gördüğünüz gibi bazı durumlarda sadece UpdatePanel kullanmak da performansı artırmıyor. Tabiki tüm sayfanın post edilmesine nazaran bir artıştan söz edebiliriz ama bize gerekli olan sadece TextBox'ın Text'i veya DropDownList'in SelectedItem'ı olacağından, tekrar viewstate'i şişirmeye veya tüm sayfanın bilgilerini tekrar sayfaya yüklemeye gerek kalmayacaktır.
Burada, kendi yazdigimiz bir webmethod uzerinden eristik. Disardan alinan hazir webservis methodlarini kullanarak da bu islemi yapabiliriz. Degisen hicbir sey olmayacak. Sadece WebServis makalemde belirttigim gibi WSDL tanitilacak. Yine webmethodun geri donus degerine gore iki js fonksiyonu yazilir. Tek onemli nokta, bizim disardan aldigimiz webmethodun, js ile kullanilabilmeye elverisli olmalidir...
0 yorum:
Yorum Gönder