Makale Özeti

Bu makalemde ASP.NET uygulamasında GridView & DetailsView kontrollerinin kullanımı, bu kontrollerde ItemTemplate kullanımı ve MsSQL Server Stored Procedure'lerini kullanarak veri bütünlüğünün sağlanması konularına değineceğim.

Makale

Tüm yazılımcı arkadaşlara selamlar,

Bu makalemde ASP.NET uygulamasında GridView & DetailsView kontrollerinin kullanımı, bu kontrollerde ItemTemplate kullanımı ve MsSQL Server Stored Procedure'lerini kullanarak veri bütünlüğünün sağlanması konularına değineceğim.

AjandaX
Örnek uygulama olarak bir Ajanda uygulaması geliştireceğiz.Yeni bir ASP.NET uygulaması oluşturun.Dil olarak Visual C# kullanacağız.Projeyi AjandaX olarak isimlendirin.

Uygulamamızda kullanmak üzere bir SQL Server Veritabanı yaratın.

Senaryomuzda iki tablomuz olacak.kisiler tablosunda kisi id,isim,soyisim,meslek bilgileri, meslekler tablosunda ise meslek bilgileri tutulacak.Veritabanı ve tablolarin t-SQL kodu aşağıdadır.

 AjandaX veritabanı t-SQL kodu
USE [master]
GO
/****** Object:  Database [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF]    Script Date: 10/24/2006 16:46:18 ******/
CREATE DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] ON  PRIMARY 
( NAME = N'AjandaX', FILENAME = N'C:\LEO_LAB\AjandaX\App_Data\AjandaX.mdf' , SIZE = 1664KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'AjandaX_log', FILENAME = N'C:\LEO_LAB\AjandaX\App_Data\AjandaX_log.LDF' , SIZE = 504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 COLLATE SQL_Latin1_General_CP1_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET ARITHABORT OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET AUTO_CLOSE ON 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET AUTO_SHRINK ON 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET  DISABLE_BROKER 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET  READ_WRITE 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET RECOVERY SIMPLE 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET  MULTI_USER 
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF] SET DB_CHAINING OFF 

 AjandaX veritabanı tabloları t-SQL kodu
USE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF]
GO
/****** Object:  Table [dbo].[kisiler]    Script Date: 10/24/2006 16:49:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[kisiler](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[isim] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[soyisim] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[meslek] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 CONSTRAINT [PK_kisiler] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF


USE [C:\LEO_LAB\AJANDAX\APP_DATA\AJANDAX.MDF]
GO
/****** Object:  Table [dbo].[meslekler]    Script Date: 10/24/2006 16:50:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[meslekler](
	[meslek] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

Son olarak tablolara birkaç veri girelim.

 

Evet artık web sayfamızı düzenlemeye geçebiliriz.Uygulamada AJAX Extension'larından UpdatePanel kullanacağız.Bu yüzden sayfamıza bir ScriptManager ve UpdatePanel ekliyoruz.Eğer sisteminizde AJAX extension'lar yüklü değilse ajax.asp.net sayfasından indirebilir veya bu işlemi geçebilirsiniz.UpdatePanel'ı kullanmamızın sebebi hata mesajlarını client tarafı çalıştırılan mesaj kutularında alarak arayüzün kullanıcıya daha yakın olmasıdır.

Sayfamıza ilk ekleyeceğimiz kontrol SqlDataSource kontrolü olacaktır.Kontrolü ekledikten sonra SqlDataSource akıllı etiketinden 'Configure Data Source' seçeneğini seçin, verikaynağı olarak projemize eklediğimiz AjandaX veritabanını seçin.'Configure the select statement' bölümünde kişiler tablosundan bütün kolonları seçin.

Advanced butonuna tıklayın ve 'Generate insert,update and delete statements' seçeneğini aktif hale getirin.

Bu seçeneği seçtiğimizde SqlDataSource kontrolü kisiler tablosu için select komutuna ek olarak insert update ve delete sql cümlelerini de oluşturacaktır.Aynı şekilde forma bir SqlDataSource kontrolü daha ekleyin.SqlDataSource2 olarak isimlendirin ve meslekler tablosundan meslek alanını okuyacak şekilde ayarlayın.Meslekler tablosuna kayıt ekleme silme güncelleme işlemlerini gerçekleştirmeyeceğimiz için 'Advanced SQL Generation Options' ekranında 'Generate Insert,Update,Delete statements' seçenğini seçmenize gerek yoktur.Bu işlemleri bitirdikten sonra form üzerine bir GridView kontrolü ekleyin.Kontrole ait akıllı etiketi kullanarak kontrolün datasource özelliğini SqlDataSource1 olarak ayarlayın.

Evet artık projemizi çalıştırıp testini yapabiliriz.

Edit ve Delete linklerini test ettiğimizde göreceksinizki veriler SqlDataSource'un arkaplanda yaratmış olduğu insert,update,delete sql cümleleri ile güncellenmektedir.



Levent YILDIZ
theone@leventyildiz.net
msmoracle@hotmail.com 
http://www.leventyildiz.net