Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Mehmet Gökay Okutucu
Mehmet Gökay Okutucu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
2 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: ado.net burada dikkat doquery function insert isimli islemlerinin li.innerhtml makalemizde service supplier tabloda veritabani veriyi .NET 3.x Mehmet Gökay Okutucu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : .NET 3.x
Yayınlanma Tarihi : 19.2.2009
Okunma Sayısı : 21743
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Ajax ile Ado.Net Data Services Kardeşliği - Bölüm 2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bir önceki makalemizde (Başlamadan önce konuyla ilgili ilk yazıyı okumanızı tavsiye ediyorum.); bir Ado.Net Data Service üzerinden veriyi Ajax ile nasıl talep edebileceğimizi görmüştük. Bu yazımızda ise bu makalenin devamı olarak CRUD(Select, Insert, Update, Delete) işlemlerini ele alacağız.

Örneğimiz için ben veritabanı olarak Northwind veritabanını seçtim. Seçim nedenim ise; nullable(null olarak kalabilen, null değer atanabilen) alanların az olması ve tablolar arası ilişkilerin çoğu tabloda var olmaması. Mesela çalışacak olduğumuz Suppliers isimli tabloda null değerlere izin verilen alanlar çok fazla, null değer atanamayan alan sayısı ise sadece bir tane. Ben bu zorunlu alana veri girip, diğer alanlara veri girmezsem sorun olmayacak. Böylece biraz vakit kazancı sağlamış olacağız.

ADS ile Ajax Kardeşliği : Kral’in Dönüşü O zaman hızlıca Ado.Net Entity Model’imizi ekleyelim ve veritabanı olarak Northwind’i seçelim. Sihirbaziı ilerleyen kısımlarında bizden tablo isimlerini isteyecektir.

wizard

wizardTable

Biz burada Suppliers isimli tabloyu seçiyoruz ve Finish butonuna basıyoruz. Modelimizi oluşturduktan sonra projemize Ado.Net Data Service nesnemizi ekliyoruz. Servis üzerinden sadece okuma işlemi gerçekleştirmeyecegimiz için Entity tipine erisim rolünü EntitySetRights.All olarak degistiriyoruz.

information Entity Tiplerine ait diğer erişim rolleri aşağıda verilmiştir.

Entity nesneleri üzerinde;

All Okuma ve yazma işlemlerinin tümünün yapılması
AllRead Veri okuma işlemlerinin yapılması.
AllWrite Veri yazma işlemlerinin yapılması.
None Okuma ve yazma erişimine izin vermez.
ReadMultiple Tüm içeriğin sorgulanmasına izin verir.
ReadSingle Anahtar ile okumaya izin verir
WriteAppend Sadece veri ekleme işlemlerinin yapılması.
WriteDelete Sadece veri silme işlemlerinin yapılması.
WriteMerge Sadece veri ekleme ve güncelleme işlemlerinin yapılması.
WriteReplace Sadece veri güncelleme işlemlerinin yapılması.


 Böylece CRUD işlemlerinden insert, update ve delete’i sorunsuz bir şekilde kullanabileceğiz.

using System; using System.Data.Services; using System.Collections.Generic; using System.Linq; using System.ServiceModel.Web; using NorthwindModel; public class NorthwindService : DataService<NorthwindEntities> { // This method is called only once to initialize service-wide policies. public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All); } }
Artık web formumuza geçelim ve burada kullanacağımız html kontrollerimizi yazmaya başlayalım. Markup kısmımıza, geçen örneğimiz de olduğu gibi yine bir "ul" tag’ı ekliyoruz ve id özelliğine resultList yazıyoruz. Böylece javascript tarafında html nesnemize ulaşıp verilerimizi bu listeye ekleyebileceğiz. Bununla birlikte insert işlemini gerçekleştireceğimiz butonumuzuda listemizin hemen üstüne ekliyoruz.

webForm

<form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/Scripts/DataService.js" /> </Scripts> </asp:ScriptManager> <div id="panelMain"> <input id="insertButton" type="button" value="Insert Company"
onclick="return buttonInsert_onclick()" /><br /> <ul id="resultList"> </ul> </div> </form>
Şimdi sıra istemci tarafında CRUD olaylarını ele alacağımız javascript kodlarımıza geldi.

<script language="javascript" type="text/javascript"> var suppliers; var ds; function pageLoad() { ds = new Sys.Data.DataService("NorthwindService.svc"); doQuery(); } function doQuery() { ds.query("Suppliers?$top=10&$orderby=SupplierID desc,CompanyName", qSuccess, cbFailure); }
Burada Global seviyede iki değişkenimiz var. Böylece bunları diğer fonksiyonlar içinde kullanabileceğiz. Bunlardan biri ds yani data service isimli değiskenimiz. Bu değişken ile data servisimiz içerisinde bize gerekli olan metotlara kolaylıkla erişebileceğiz. Bir diğeri ise Suppliers isimli değişken. Bu değişkenimiz ise Array tipinde bir değişken olacak.

function qSuccess(result, context, operation) { var resultList = document.getElementById('resultList'); resultList.innerHTML = ''; suppliers = new Array(); for (var i in result) { var thisSupp = result[i]; suppliers[thisSupp.SupplierID] = thisSupp; var li = document.createElement('li'); li.appendChild(document.createTextNode(thisSupp.CompanyName + ' : ' + thisSupp.ContactName)); li.innerHTML = li.innerHTML + ' ' + '[modify]'.link('javascript:doModify(' + thisSupp.SupplierID + ');'); li.innerHTML = li.innerHTML + ' ' + '[remove]'.link('javascript:doRemove(' + thisSupp.SupplierID + ');'); resultList.appendChild(li); } }
Suppliers isimli nesnemize dikkat edersek Array tipinde yaratılıyor ve for ile sonuç içinde döndüğümüzde, her Supplier nesnemiz kendi ID’si ile Suppliers isimli dizinin, aynı sıradaki index’ine atanıyor. Böylece update ve delete olaylarında seçili olan nesneye yönelik işlemler gerçekleştiriliyor.

function buttonInsert_onclick() { var companyName = prompt("Enter a company name."); if (companyName) { //Burada veriyi JSON formatına uygun bir biçimde yaratıyoruz. var newSupplier = { CompanyName: companyName }; //Formatın alan ismi ve alan değeri şeklinde olduğuna dikkat etmeniz yeterli olacaktır. ds.insert(newSupplier, 'Suppliers', doQuery, cbFailure) } } function doModify(i) { var supplier = suppliers[i]; var newContactName = prompt("Change Company Name for supplier '"
+ supplier.CompanyName + "'.", supplier.ContactName); if (newContactName) { supplier.ContactName = newContactName; ds.update(supplier, null, doQuery, cbFailure); } } function doRemove(i) { var supplier = suppliers[i]; var response = confirm("Remove supplier '"
+ supplier.ContactName + "'?"); if (response) { ds.remove(supplier, null, doQuery, cbFailure); } }
Buradaki insert fonksiyonun da kullanıcıdan bir değer alıyoruz ve bu değer ile nesnemizi yaratıyoruz. Yalnız burada dikkat edilmesi gereken nokta şu; eğer Suppliers isimli tabloda zorunlu olan başka bir alan daha olsaydı onu da buraya eklemek zorunda kalacaktık. Buna dikkat etmezsek Callback metodumuz geriye hata döndürecektir( Yine aynı şekilde EntitySetRights.AllRead olarak kalırsa hata ile karşılaşırız. Aman dikkat!). doModify ve doRemove fonksiyonlarıyla ise buraya güncellenecek ya da silinecek olan satırın nesne örneğini gönderiyoruz. İsterseniz Run komutuyla projemizi çalıştıralım ve örneğimizi test edelim. PageLoad isimli fonksiyonumuz ile sayfa açılır açılmaz veri listelenecektir. Önce bir Insert işlemi gerçekleştirelim.

ekran1

Şirket ismini giriyoruz ve OK düğmesine basıyoruz. Bu işlemin hemen sonrasında Modify işlemini gerçekleştireceğiz. Yalnız şirket ismi karşısındaki contactName’in null olduğuna dikkat edin. Biz ContactName’ide yazdıktan sonra klavyemizdeki Enter tuşuna basıyoruz ve bu alanıda güncelliyoruz.

ekran1

İsterseniz bu güzel kaydımız burada bir hatıra olarak kalabilir ya da Remove'a basarak bu satırı ebediyen ortadan kaldırabilirsiniz...

ekran1

Bu makalemizde de sizlerle birlikte, Ajax ile ADS üzerinden nesnelere nasil erisip, nasil düzenleyebileceğimizi gördük. Umarim, şimdiden aklınızda neler yapabileceğiniz canlanmaya başlamıştır bile :) Farklı bir konuda, farklı bir makalede görüşünceye dek esen kalın.

Örnek Proje

Mehmet Gökay Okutucu
Email : [email protected]
Blog : http://gokayokutucu.blogspot.com

Makale:
Ajax ile Ado.Net Data Services Kardeşliği - Bölüm 2 .NET 3.0 ve .NET 3.5 Özel Bölümü Mehmet Gökay Okutucu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor