11 Mart 2015 Çarşamba

Asp.NET ve MySQL İle Gridview Sütunlarını Belirleme ve Veritabanından Durumlarına Göre Doldurma, TemplateField Oluşturma, Seçilen Duruma Göre Silme, Güncelleme, Yeni Kayıt ve Düzenleme İşlemleri. 4

Bir Önceki Dersteki GridView nesnesi hazırlandıktan sonra Daha Önce kodlarını yazmadığımız Update, Delete, Add butonlarının işlevlerini yazalım.
  • GridView122.DataKeys[e.RowIndex].Value; kodu değer alabilmesi için  GridView nesnesinin kodunda DataKeyNames=”alanno”  olması gerekir.
  • GridView son hali;(bir önceki dersten farklı olarak sadece kırmızı ile yazdığım kısım eklenecek );
<asp:GridView ID=”GridView122″ runat=”server” ShowFooter=”True”DataKeyNames=”alanno”
onrowcancelingedit=”GridView122_RowCancelingEdit”
onrowediting=”GridView122_RowEditing”
onrowupdating=”GridView122_RowUpdating”
onrowdeleting=”GridView122_RowDeleting” AutoGenerateColumns=”False”
onrowcommand=”GridView122_RowCommand”> şeklinde olmalıdır.
  • Güncelleme Kodu;
protected void GridView122_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//*** txtEditAlanKod ***//
TextBox txtEditAlanKod = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditAlanKod”);
//*** txtEditAlanAdi ***//
TextBox txtEditAlanAdi = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditAlanAdi”);
//*** txtEditDalAdi ***//
TextBox txtEditDalAdi = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditDalAdi”);
//*** txtEditDalSefi ***//
TextBox txtEditDalSefi = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditDalSefi”);
String strSQL;
strSQL = “UPDATE alandal SET” +
” kod= ” + txtEditAlanKod.Text +
” ,alan = ‘” + txtEditAlanAdi.Text + “‘ ” +
” ,dal = ‘” + txtEditDalAdi.Text + “‘ ” +
” ,sef = ‘” + txtEditDalSefi.Text + “‘ ” +
” WHERE alanno = ” + Convert.ToString(GridView122.DataKeys[e.RowIndex].Value);
sqlkomut = new MySqlCommand(strSQL, baglanti);
sqlkomut.ExecuteNonQuery();
GridView122.EditIndex = -1;
GridView122.ShowFooter = true;
gridviewdoldur();
}
  • Silme Kodu;
protected void GridView122_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
String strSQL;
strSQL = “DELETE FROM alandal WHERE alanno = ” + GridView122.DataKeys[e.RowIndex].Value;
sqlkomut = new MySqlCommand(strSQL, baglanti);
sqlkomut.ExecuteNonQuery();
GridView122.EditIndex = -1;
gridviewdoldur();
}
  • Ekleme Kodu;
protected void GridView122_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == “Add”)
{
//*** txtAddAlanKod ***//
TextBox txtAddAlanKod = (TextBox)GridView122.FooterRow.FindControl(“txtAddAlanKod”);
//*** txtAddAlanAdi ***//
TextBox txtAddAlanAdi = (TextBox)GridView122.FooterRow.FindControl(“txtAddAlanAdi”);
//*** txtAddDalAdi ***//
TextBox txtAddDalAdi = (TextBox)GridView122.FooterRow.FindControl(“txtAddDalAdi”);
//*** txtAddDalSefi ***//
TextBox txtAddDalSefi = (TextBox)GridView122.FooterRow.FindControl(“txtAddDalSefi”);
String strSQL;
strSQL = “INSERT INTO alandal (kod,alan,dal,sef) ” +
” VALUES (” + txtAddAlanKod.Text + “,'” + txtAddAlanAdi.Text + “‘ ” +
” ,'” + txtAddDalAdi.Text + “‘,'” + txtAddDalSefi.Text + “‘) “;
sqlkomut = new MySqlCommand(strSQL, baglanti);
sqlkomut.ExecuteNonQuery();
gridviewdoldur();
}
}

Flash ActionScript 3.0 (as3) ile Mouse Takip Eden .Gözler

Fareyi takip eden gözler veya farenin konumuna göre silahın hareket ettiği animasyonlar için Türkçe kaynak az. Bunun için biraz matematik bilgisi kullanıyoruz. Fare ve nesne konumlarından yararlanarak aradaki açıyı hesap ediyor ve nesnenin dönme oranı olarak veriyoruz. Bunun için aşağıdaki resimdeki gibi iki adet göze benzeyen film klibi oluşturuyoruz. birinci film klibine isim olarak goz1_mc, diğerine goz2_mc verdik.

A nesnesinin mouse baktığında oluşan x ve  y değerlerine göre açının hesaplanması;
radyan= Math.atan2(a1, b1); //Yukarıdaki şekle göre flashta aradaki açının radyal cinisnden değeri
derece = radyan / (Math.PI / 180);//bulunan radyal değerin derece haline döndürme
Daha sonra Zaman Çizelgesi katmandaki ilk frame üzerine tıklıyoruz. Sonra F9 tuşu ile ActionScript paneline aşağıdaki kodları yazıyoruz;
stage.addEventListener(MouseEvent.MOUSE_MOVE,takipetfonk);
function takipetfonk(event:MouseEvent):void{
var a1=mouseY-goz1_mc.y;
var b1=mouseX-goz1_mc.x;
var radyan1=Math.atan2(a1,b1)//konuma göre açının radyal cinsten hesabı
var derece1=radyan1 / (Math.PI / 180);//derece haline çevirme
goz1_mc.rotation=derece1;
var a2=mouseY-goz2_mc.y;
var b2=mouseX-goz2_mc.x;
var radyan2=Math.atan2(a2,b2)
var derece2=radyan2 / (Math.PI / 180);
goz2_mc.rotation=derece2;
}

Flash ActionScript 3.0 (as3) ile Mouse Yapışan Nesneler

Bunun için yapışacak film klibini hazırlıyoruz ve adına top_mc veriyoruz ve;
  • 1.yol ActionScript Paneline şu kodları yazıyoruz.
top_mc.startDrag();//nesne mouse yapıştı
top_mc.x=mouseX;//mouse ile x koordinatı eşitlendi
top_mc.y=mouseY;//mouse ile y koordinatı eşitlendi
  • 2.yol;
stage.addEventListener(MouseEvent.MOUSE_MOVE,fareyeyapisfonk);
function fareyeyapisfonk(event:MouseEvent):void {
top_mc.x=mouseX;
top_mc.y=mouseY;
}
  • 3. yol burda biraz yapışma gecikmesi verdik.
stage.addEventListener(Event.ENTER_FRAME,fareyeyapisfonk);
function fareyeyapisfonk(event:Event):void {
var xgec:int = top_mc.x – mouseX;
var ygec:int = top_mc.y – mouseY;
top_mc.x -= xgec /5;
top_mc.y -= ygec /5;
}

Flash As3 ‘de Tüm Kodları Sınıf Dosyaları (*.as) içine yazmak.

Küçük projelerde kodları zaman çizelgesinde aynı fla dosyası içine yazmak basit ve kolay bir çözüm. Fakat projeler geliştikçe bu kodları ayırmak geliştirici için zorunlu hale geliyor. Şimdi ben bu işe öğrenebildiğim ve araştırdığım kadarıyla Şöyle adım adım yapalım.
  • Bir FLA oluşturma  Dosya> Yeni … Flash Dosyası (ActionScript 3.0) . ornek.fla olarak Istediğiniz yere kaydedin
  • Bir ActionScript dosyası oluşturun Dosya> Yeni … ActionScript Dosya . Main.as FLA ile aynı klasörde kaydet.
  • flash_as_1
  • Main.as dosyası ile ornek.fla Dosyasını birbirine bağlama resimdeki gibi yapın. Sınıf içerisine Main.as dosyasının adını şekildeki gibi uzantı olmadan yazın. (ben dosya adını küçük harfle yazmıştım kodun başlangıcında büyük harf vardı çalışmadı. sonra düzelttim çalıştı.)Yandaki kaleme bastığınızda oluşturduğunuz main.as dosyası açılmalıdır.
  • flash_as_2
  • Main.as dosyasının içine aşağıdaki kodu yazın.
package
{
import flash.display.MovieClip;
public class Main extends MovieClip  //buradaki sınıf ismi dosya ismiyle büyük küçük harf duyarlı olacak şekilde aynı olmak zorundadır.
{
public function Main()
{
//bu alana kodları yazacağız.
}
}
}
  • Aşağıda ilk çalışan örnek;
package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public function Main()
{
var sonuc:String = “Merhaba Dünya”;
trace( sonuc );
}
}
}
  • Başka bir genel bir string değişkeninin değeri fonksiyon ile değiştirilmiş Örnek;
package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public var sonuc:String;
public function Main()
{  sonuc= = “Merhaba”;
ilkfonksiyon;
trace( sonuc );
}
        public function ilkfonksiyon():void  
{
sonuc= “Güle Güle”;
}
}
}

Flash As3 ‘de Duman Efekti Oluşturma

  • Öncelikle Photoshop veya Başka bir resim düzenleme programında 40X40 boyutlarında bir *.png dosyası oluşturalım. Arkaplan şeffaf olsun.
  • dumanDuman.png dosyası isterseniz kullanabilirsiniz.
  • dumanyapimi_1dumanyapimi_2  photoshopta yapılanlar.
  • Sonra Fırça efektlerinden şekildeki gibi bir fırça efekti oluşturalım, oluşan resim üzerine duman benzeri fırça darbeleri oluşturalım. İsterseniz görünürlük ayarlarını düşürerek istediğiniz duman efektinin bir karesini oluşturun.
  • Aşağıdaki gibi bir klasör içinde bir önceki örnekteki gibi dosyaları flashta oluşturun ve kaydedin. Büyük/Küçük Harf ve isimler önenmli.
  • flash_as2_1
  • flash_as2_2 ornek.fla dosyasına Main.as bağlama
  • ornek.fla dosyasının kütüphanesine oluşan duman.png dosyasını ekleyelim. Ekledikten (ctrl+L) sonra sahneye çekin. Arkaplanda beyaz veya başka renk varsa parçalayıp (ctrl+B) kemet aracı ve sihirli değnek araçlarını kullanarak temizleyin. Sonra duman şekli sahnede seçili iken F8 ‘e basın. duman_mc isimli bir Movie Clip ‘e çevirin. Sahneden silin. Sonra şekildeki gibi bağlayın.
  • flash_as2_3duman_mc klibine sağ tuş özellkiler ile duman_mc.as dosyasını bağlama
  • Main .as dosyası içeriği;
package
{
import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.Event;
import duman_mc;
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main() : void
{
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}
private function loop(e:Event) : void
{
var Duman_mcnnesnesi:duman_mc = new duman_mc();
Duman_mcnnesnesi.x = 250;
Duman_mcnnesnesi.y = 250;
stage.addChild(Duman_mcnnesnesi);
}
}
}
  • duman_mc.as dosyası içeriği;
package
{
import flash.display.BlendMode;
import flash.display.MovieClip;
import flash.events.Event;
public class duman_mc extends MovieClip //duman_mc movie klibi için sınıf üretiyoruz
{
public var vx:Number;
public var vy:Number;
public function duman_mc() : void
{//görünürlük, boyut ve konumun rastgele alanlar olmasını sağlıyoruz
alpha = Math.random();
vx = Math.random() – Math.random();
vy = Math.random() * 3 – 5;
scaleX = scaleY = Math.random();
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}
private function loop(e:Event) : void
{
alpha -= 0.01;
y += vy;
x += vx;
scaleX = scaleY += 0.02;
if (alpha < 0)
removeSelf();//görünürlük 0 dan küçük değere düştümü olay bitiyor.
}
private function removeSelf() : void
{
removeEventListener(Event.ENTER_FRAME, loop);
parent.removeChild(this);
}
}
}

Asp.NET ve MySQL Gridview İçinde DropDownList ve Diğer Nesnelerin Kullanımı 5 SON.

Diğer 4 konuda GridView kullanımının ayrıntılarını görmüştük. (konu1, konu2, konu3,konu4) Şimdi son olarak GridView içine diğer nesneleri yerleştirip veri tabanı ile ilişkilendirelim.Bu anlatılanlar Wizardlar kullanılarak yapılabilsede kullandıpımız veritabanı MySQL olduğu için mecbur yazmak en sağlamı ve en etkili yolu. 4. konu anlatımından farklı olarak kodumuzda değişenler;
Not: Kullandığım alandal tablosunda alanno(otomatik sayı), kod(sayı), alan(metin), dal(metin), sef(metin)  
  • gridview1.aspx dosyasındaki GridView122 nesnesinde değişenler ve mutlak önemli olanlar;
  • DataKeyNames=”alanno”:Satır Seçimlerinde baz alınacak alan
  • <asp:dropdownlist id=”dbEditAlanAdi” runat=”server” Visible=”true”></asp:dropdownlist>:edit butonuna basıldığında açılır kutu aşağıdaki kodlarla dolacak.
  • <asp:Label id=”lblEditAlanAdi” runat=”server” Visible=”false”
    Text='<%# DataBinder.Eval(Container, “DataItem.alan”) %>’>
    </asp:Label>:Buradaki Gizli label aslında veritabanında kayıtlı olan değeri tutuyor ve kod içinde açılır kutuya kaynak olarak seçili olan olmasını sağlıyoruz.
  • <asp:dropdownlist id=”dbaddAlanAdi” runat=”server” Visible=”true”>
    </asp:dropdownlist>:Yeni kayıt ekleme satırında bulunacak nesne kod bölümünde doldurulacak.
  • gridview1.aspx dosyası;
<asp:GridView ID=”GridView122″ runat=”server” ShowFooter=”True”DataKeyNames=”alanno”
onrowcancelingedit=”GridView122_RowCancelingEdit”
onrowediting=”GridView122_RowEditing”
onrowupdating=”GridView122_RowUpdating”
onrowdeleting=”GridView122_RowDeleting” AutoGenerateColumns=”False”
onrowcommand=”GridView122_RowCommand”
onrowdatabound=”GridView122_RowDataBound”>
<Columns>
<asp:TemplateField HeaderText=”Alan No”>
<ItemTemplate>
<asp:LinkButton id=”lblAlanNo” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.alanno”) %>’></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:Label id=”lblEditAlanNo” size=”5″ runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.alanno”) %>’></asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:Label id=”lblAddAlanNo” size=”5″ runat=”server”></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”Alan Kod”>
<ItemTemplate>
<asp:Label id=”lblAlanKod” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.kod”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=”txtEditAlanKod” size=”5″ runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.kod”) %>’></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox id=”txtAddAlanKod” size=”5″ runat=”server”></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”Alan Adı”>
<ItemTemplate>
<asp:Label id=”lblAlanAdi” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.alan”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:dropdownlist id=”dbEditAlanAdi” runat=”server” Visible=”true”></asp:dropdownlist>
<asp:Label id=”lblEditAlanAdi” runat=”server” Visible=”false”
Text='<%# DataBinder.Eval(Container, “DataItem.alan”) %>’>
</asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:dropdownlist id=”dbaddAlanAdi” runat=”server” Visible=”true”>
</asp:dropdownlist>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”Dal Adı”>
<ItemTemplate>
<asp:Label id=”lblDalAdi” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.dal”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=”txtEditDalAdi” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.dal”) %>’></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox id=”txtAddDalAdi” runat=”server”></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText=”Dal Şefi”>
<ItemTemplate>
<asp:Label id=”lblAlanDalSefi” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.sef”) %>’></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=”txtEditDalSefi” runat=”server” Text='<%# DataBinder.Eval(Container, “DataItem.sef”) %>’></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox id=”txtAddDalSefi” runat=”server”></asp:TextBox>
<asp:Button id=”btnAdd” runat=”server” Text=”Add” CommandName=”Add”></asp:Button>
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText=”Düzenle” ShowEditButton=”True” />
<asp:CommandField HeaderText=”Satır Sil” ShowDeleteButton=”True” />
</Columns>
</asp:GridView>
  • gridview1.aspx.cs dosyası değişenler ve önemli ayrıntılar;
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MySql.Data.MySqlClient;
using System.Collections.Generic;
using System.Linq;
using MySql.Data;//proje adına sag tıklayarak Add Reference seçeneğinden .NET sekmesinden MySQL.Data eklenecek
public partial class gridview1 : System.Web.UI.Page
{
MySqlConnection baglanti;
MySqlCommand sqlkomut;
ListItem defValue = new ListItem();//açılır kutulara eklenecek elemanlar için
ListItem defValue3 = new ListItem();
protected void Page_Load(object sender, EventArgs e)
{
baglantifonk();//MySQL Bağlantı kodları
if (!Page.IsPostBack)//sayfa ilk çalıştığında GridViewi doldurma
{
GridView122.ShowFooter = true;
gridviewdoldur();
}
}
protected void baglantifonk()//sık sık kullanacağımız MySQL Bağlantısı kodları fonksiyon olarak yazdık
{
String baglantistringi;
baglantistringi = “Server=localhost;User Id=root; Password=1parola0; Database=yogaltim_db; Pooling=false”;
baglanti = new MySqlConnection(baglantistringi);
baglanti.Open();
}
protected void gridviewdoldur()//GridView nesnesi doldurma fonksiyonu
{
String strSQL;
strSQL = “SELECT alanno,kod,alan,dal,sef FROM alandal “;
MySqlDataReader dtReader;
sqlkomut = new MySqlCommand(strSQL, baglanti);
dtReader = sqlkomut.ExecuteReader();
GridView122.DataSource = dtReader;
GridView122.DataBind();
dtReader.Close();
dtReader = null;
}
protected void Page_UnLoad()//sayfa kapatıldığında bağlantıyı sonlandırma
{
baglanti.Close();
baglanti = null;
}
protected void GridView122_RowEditing(object sender, GridViewEditEventArgs e)//Gridview122 edit butonuna basıldığında
{
GridView122.EditIndex = e.NewEditIndex;//gridviewde tıklanan satır güncelleme modunda gözükecek
GridView122.ShowFooter = false;//gridwiev ekleme satırı gözükmeyecek
gridviewdoldur();
}
protected void GridView122_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)//Gridview122 edit butonuna basıldıktan sonra cancel butonuna basılırsa.
{
GridView122.EditIndex = -1;//gridview güncelleme satırı modundan çıkacak
GridView122.ShowFooter = true;//gridwiev ekleme satırı gözükecek
gridviewdoldur();
}
protected void GridView122_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//*** txtEditAlanKod ***//
TextBox txtEditAlanKod = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditAlanKod”);
//*** dbEditAlanAdi ***//
DropDownList dbEditAlanAdi = (DropDownList)GridView122.Rows[e.RowIndex].FindControl(“dbEditAlanAdi”);
//*** txtEditDalAdi ***//
TextBox txtEditDalAdi = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditDalAdi”);
//*** txtEditDalSefi ***//
TextBox txtEditDalSefi = (TextBox)GridView122.Rows[e.RowIndex].FindControl(“txtEditDalSefi”);
String strSQL;
strSQL = “UPDATE alandal SET” +
” kod= ” + txtEditAlanKod.Text +
” ,alan = ‘” + dbEditAlanAdi.Text + “‘ ” +
” ,dal = ‘” + txtEditDalAdi.Text + “‘ ” +
” ,sef = ‘” + txtEditDalSefi.Text + “‘ ” +
” WHERE alanno = ” + Convert.ToString(GridView122.DataKeys[e.RowIndex].Value);
sqlkomut = new MySqlCommand(strSQL, baglanti);
sqlkomut.ExecuteNonQuery();
GridView122.EditIndex = -1;
GridView122.ShowFooter = true;
gridviewdoldur();
}
protected void GridView122_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
String strSQL;
strSQL = “DELETE FROM alandal WHERE alanno = ” + GridView122.DataKeys[e.RowIndex].Value;
sqlkomut = new MySqlCommand(strSQL, baglanti);
sqlkomut.ExecuteNonQuery();
GridView122.EditIndex = -1;
gridviewdoldur();
}
protected void GridView122_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == “Add”)
{
//*** txtAddAlanKod ***//
TextBox txtAddAlanKod = (TextBox)GridView122.FooterRow.FindControl(“txtAddAlanKod”);
//*** dbaddAlanAdi ***//
DropDownList dbaddAlanAdi = (DropDownList)GridView122.FooterRow.FindControl(“dbaddAlanAdi”);
//*** txtAddDalAdi ***//
TextBox txtAddDalAdi = (TextBox)GridView122.FooterRow.FindControl(“txtAddDalAdi”);
//*** txtAddDalSefi ***//
TextBox txtAddDalSefi = (TextBox)GridView122.FooterRow.FindControl(“txtAddDalSefi”);
String strSQL;
strSQL = “INSERT INTO alandal (kod,alan,dal,sef) ” +
” VALUES (” + txtAddAlanKod.Text + “,'” + dbaddAlanAdi.Text + “‘ ” +
” ,'” + txtAddDalAdi.Text + “‘,'” + txtAddDalSefi.Text + “‘) “;
sqlkomut = new MySqlCommand(strSQL, baglanti);
sqlkomut.ExecuteNonQuery();
gridviewdoldur();
}
}
protected void GridView122_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow) //Edit butonuna basınca açılır kutu oluşturma
{
Label lblEditAlanAdi = (Label)e.Row.FindControl(“lblEditAlanAdi”);//aynı yerde değeri tutan gizli label
DropDownList dbEditAlanAdi = (DropDownList)e.Row.FindControl(“dbEditAlanAdi”);//alan değerlerinin yükleneceği açılır kutu
if (null != dbEditAlanAdi)
{
dbEditAlanAdi.DataSource = getdataset1().Tables[0];//açılır kutuyu aşağıdaki fonksiyonu çağırarak veritabanından doldurduk
dbEditAlanAdi.DataTextField = “alan”;
dbEditAlanAdi.DataValueField = “alan”;
dbEditAlanAdi.DataBind();
//Response.Write(lblEditAlanAdi.Text);
MySqlCommand alanalkomut1 = new MySqlCommand(“select alan from alandal where alan='” + lblEditAlanAdi.Text+”‘”, baglanti);
MySqlDataReader alanoku1 = alanalkomut1.ExecuteReader();//daha önce kayıtlı verinin açılır kutuda seçili olmasını sağladık.
if (alanoku1.Read())
{
defValue3.Text = alanoku1[“alan”].ToString();
defValue3.Value = alanoku1[“alan”].ToString();
defValue3.Selected = true;
dbEditAlanAdi.Items.Add(defValue3);
}
else
{
dbEditAlanAdi.Items.Add(defValue); // eğer sistemde kayıtlı değilse  defValue’ yi dropdownlist’e ekliyoruz.
}
}
}
if (e.Row.RowType == DataControlRowType.Footer)//yeni kayıt satırında ise
{ DropDownList dbaddAlanAdi = (DropDownList)e.Row.FindControl(“dbaddAlanAdi”);//isimli liste elemanını bul
if (null != dbaddAlanAdi)
{
dbaddAlanAdi.DataSource = getdataset1().Tables[0]; //oluşsan dataset fonksiyonundan değerleri al
dbaddAlanAdi.DataTextField = “alan”;
dbaddAlanAdi.DataValueField = “alan”;
dbaddAlanAdi.DataBind();// açılır kutuya ekle
listeelemanifonk();//yeni bir liste elemanı oluşturan fonksiyon
dbaddAlanAdi.Items.Add(defValue); // Daha sonra dropdownlist’e ekliyoruz.
}
}
}
private DataSet getdataset1()//DropDownList nesnelerinin veritabanı ilişkisi
{
baglantifonk();
string strSQL = “Select alan from alandal”;
MySqlDataAdapter ad = new MySqlDataAdapter(strSQL, baglanti);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
protected void listeelemanifonk() // defValue değerini oluşturan fonksiyon
{
defValue.Text = “Lütfen birini seçiniz!”; // Listede görünecek yazı
defValue.Value = “”; // Görünen isme karşılık gelen değer *SelectedValue
defValue.Selected = true; // Bunun seçili olmasını sağlıyoruz.
}
}
İnternette özellikle bu konu ile ilgili bir sürü yabancı kaynak var. Ama türkçe pek bulamadım. Yabancı kaynaklarda nedense sanki anlaşılmasın diye çok ağır ve çok tefarruata girerek anlatmışlar. Benim sadeleştirebildiğim kadarıyla GridView konusunun sonuna geldik. Bunları öğrendim. Diğer nesneler de aynı yöntemler kullanılarak eklenebilir diye düşünüyorum.

ASP.NET MVC NEDİR? -1

Asp.net Bot yazımı ile yazılara baktım karşıma bu sorun çıktı. Önce Şöyle bloglardaki tanımları bir derleyelim. ASP.NET MVC w3school anlatımıyla şu demekmiş;
“ASP.NET HTML, CSS, JavaScript ve sunucu taraflı programlama ile web sayfaları ve web siteleri yapmaya yarayan bir geliştirme yapısıdır.
ASP.NET 3 farklı geliştirme modeli sunar: Web pages, MVC (Model View Controller) ve Web Forms.”
MVC, uygulamanın kullanıcı arayüzünü 3 temel yapıya ayırır:
Model: Verinin nasıl değişeceğini ve nasıl yönetileceğini belirleyen iş kurallarını (Business Rules) içeren sınıfların tamamının bulunduğu katmandır. Genelde bunlar veritabanını temsil eden sınıflarlar veya domaini temsil eden nesnelerdir. EntityFramework, NHibernate gibi, entity-data-model ler de, model katmanında yer alabilir. Yani uygulamamızda kullanacağımız nesneler bu katmandadır.
View: Kullanıcı arabiriminin (User Interface – UI) gösterileceği katman. Dinamik olarak üretilen HTML şablonu bu katmandadır. Kısaca veri gösterim katmanı diyebiliriz.
Controller: Tüm sistem akışının, kullanıcı ile olan etkileşimi kontrol eden ve olayları yöneten sınıfların tamamı. View ve Model katmanları arasındaki ilişkiyi yönetir. Kullanıcıdan girdi alır, modelle iletişime geçer ve ne gösterileceğine karar verir.
ASP.NET MVC 1
13 MART 2009 da resmi olarak kodlar ve birim testlerle MVC mimarisi yayınlanmıştır. MVC mimarisinin bugün kullanılan bir çok özelliği aslında MVC 2 de gelecektir.
ASP.NET MVC 2
MVC 2 ilkinden 1 yıl sonra yayınlanmıştır (MART 2010). MVC 2 de olan bazı ana özellikler şunlardır:
  • Otomatik olarak oluşturulan kullanıcı arabirimi yardımcıları (UI Helpers) ve özelleştirilebilir şablonlar.
  • Hem server, hem de istemci taraflı, nitelik tabanlı (attribute-based) bir model doğrulama (model-validation) yapısı.
  • Strongly typed HTML Helpers
  • Geliştirilen Visual Studio araçları.

ASP.NET MVC 3
MVC 3, MVC 2 den 10 ay sonra yayınlanmıştır. Eklenen ana başlıklar:
  • Razor görüntüleme motoru (Razor View Engine).
  • .NET 4 dataannotation desteği.
  • Gelişmiş model doğrulama (model validation).
  • Unobtrusive JavaScript, jQuery Validation, ve JSON için daha iyi bir JavaScript desteği.
  • Yazılım ve platforma bağlı güncellemeler ve yönetim için NuGet kullanımı.
ASP.Net MVC Framework ‘ün ile getirdikleri yönünde bakacak olur isek; Controller kavramını kullanımı sayesinde, geliştirilen Web uygulamasının test kodu yazılması, daha kaliteli uygulama geliştirebilmesini sağlanmıştır. ASP.Net MVC ’nin getirdiklerini kullanıcı tarafından bakacak olur isek; temiz içerik ve anlamlı adres(Routing) üretimidir. Bu özellikler uygulama içerisinde sunulan ürün ya da bilgilerinin arama motorları(Bing,Google) daha kolay bulabilmesi, hazırlanan içeriğin hızlı cevap vermesini sağlamaktadır.
ASP.Net MVC Framework’ün uygulamalarımıza katığı bu özelliklerin yanında yeni sürümü ile de birçok kolaylık sunmaktadır. Bu yenilikler aşağıdaki gibi sıralama yapabiliriz.
  • Razor View Engine
  • Multi View Engine
  • Dependency Injection kullanım kolaylığı
  • Dynamic View ve ViewModel
  • Validation Impovemets
  • Session Yönetimi
  • Global Action Filters
  • JavaScript ve AJAX yenlikleri
Şimdi yenilikler hakkında kısa bilgilere verelim.
Razor View Engine
ASP.Net MVC 3, önceki sürümlerinde farklı olarak yeni bir View Engine yapısı ile gelmektedir. ASP.Net MVC ‘nin önce ki sürümlerinde Saprk View Engine ya da NHaml gibi View Engine yapıları ile View tasarımlarımız daha kolay bir şekilde gerçekleştir biliyorduk. Razor View Engine ile ASP.Net MVC 3 bütünleşik olarak geldiği için ve .Net 4 desteği ile ASP.Net MVC uygulamalarını daha kolay ve hızlı geliştirebiliyoruz.
Multi View Engine
ASP.Net MVC 3 yeniliklerinde bir olan Razor View Engine gibi ASP.Net MVC uygulamalarında View tasarlama işlemlerimizi kullanabileceğimiz birden fazla View Engine bulunmaktadır. Multi View Engine yeniliği sayesinde, uygulama projemize şablon dahil etme aşamasına farklı View Engine kullanmayı amaçlamaktadır.
Dependency Injection kullanım kolaylığı
ASP.Net MVC 2 ve önceki sürümlerinde MvcTurbine ve benzeri araçları kullanarak ASP.Net MVC uygulamalarımızda IoC uygulamalarımızı gerçekleştiriyorduk. ASP.Net MVC 3 sürümü ile ise, çözümü kendi içerisinde oluşturmayı amaçlayan Ioc ara yüz(interface) nesneleri bulunmaktadır.
Dynamic View ve ViewModel
Bu özellik ile .Net 4 yeniklerinde biri olan Dynamic Type özelliğini ASP.Net MVC içerisinde yer alması anlamına gelmektedir. Bu sayede sanki öyle bir özellik varmışçasına, söz konusu özelliği kullanabilmemize izin vermektedir. .Net 4 ile C# herhangi bir alanda hazırlanaDynamic işlemde olduğu gibi söz konusu tanımlama çağırıldığında hata olup olmadığı durumu anlaşılmaktadır.
Validation Impovemets
ASP.Net 4 ile birlikte gelene yeniliklerden bir tanesidir. Bu şekliyle ASP.Net 4 üzerine gelene gelişmiş doğrulama yapısını, ASP.Net MVC 3birlikte kullanabilmekteyiz.
Session Yönetimi(SessionState)
Geliştirmiş olduğumuz ASP.Net MVC projesinin içerisinde bulunan Controller nesnesini Session içerisinde veri taşıması istemeye biliriz. Bu gibi durumlar için geliştirilmişi Attribute yapısıdır.
Global Action Filters
Bazı durumlarda geliştirmiş olduğumuz ASP.Net MVC uygulamasının, uygulama yapılan her istemi denetlemek ya da uygulamalardan yapılan istemler sırasında gerçekleşecek işlemler olabilir. Bu gibi durumlar için geliştirilmiş bir yapıdır.
JavaScript ve AJAX yenlikleri
Standart bir ASP.Net MVC şablonu oluşturduğumuz varsayılan olarak projemize Script klasörü gelmektedir. Bu klasör içerisinde ise,ASP.Net AJAX ve JQuery ile ilgili JavaScirpt dosyaları gelmektedir. ASP.Net MVC 3 sürümü ile AJAX konusunda daha iyileştirilmiş bir şekilde kullanıcılarına sunulmaktadır.
Bir sonraki konuda ASP.Net MVC 3 için gerekli kurulum ve Razor görüntüleme motoru (Razor View Engine) veuygulamalar ile devam etmeye çalışacağım.
Kaynak: