Kullanım şekli aşağıdaki gibidir.
<atlas:UpdatePanel ID="CustomerUpdatePanel" runat="server" Mode="Conditional">
<Triggers>
’ Burada herhangi bir controlün event’i yada propety si takip edilecek..
<atlas:ControlEventTrigger ControlID="btnSave" EventName="Click" />
<atlas:ControlEventTrigger ControlID="lstCustomers" EventName="SelectedIndexChanged" />
<atlas:ControlValueTrigger ControlID="DropDownList1" PropertyName="SelectedValue" />
</Triggers>
<ContentTemplate>
Güncellenebilir içerik, textbox, grid, listbox vs…
</ContentTemplate>
Artık projemize geçebiliriz. Bunun için ilk olarak yeni bir proje açalım fakat proje template lerinden Atlas’ı seçelim.
Projemizi oluşturduktan sonra projemizde ne yapacağımızdan bahsedelim. Bunun için projemize bir adat dropdownlist ve bir adet grid ekleyelim. Sayfamıza eklediğimiz drop downlist içerisinde customers içerisindeki illeri listeleteceğiz. Kullanıcı bu illeri seçtiğinde bu illere ait olan müşteriler grid içerisinde listelenecektir. Sayfamızın kod kısmına gelerek ilk olarak sehirleri dropdownliste dolduracak kodları yazalım.
Private Sub Sehirler()
Dim Cnn As New SqlConnection("Data Source=localhost; Database=northwind; uid=sa; pwd=")
Dim Da As New SqlDataAdapter("Select distinct city from customers", Cnn)
Dim Ds As New DataSet
Da.Fill(Ds, "t")
DropDownList1.DataSource = Ds.Tables(0)
DropDownList1.DataTextField = "City"
DropDownList1.DataValueField = "City"
DropDownList1.DataBind()
End Sub
Sehirler adında bir sub oluşturduk. Bu sub’ ı istediğimiz yerden çağırabiliriz artık. Şehirlerimizi listeledikten sonra bu şehirdeki müşterilerimizi de görüntülemek için gridimizi doldurabiliriz artık.
Private Sub Musteriler(ByVal SQLString As String)
Dim Cnn As New SqlConnection("Data Source=localhost; Database=northwind; uid=sa; pwd=")
Dim Da As New SqlDataAdapter(SQLString, Cnn)
Dim Ds As New DataSet
Da.Fill(Ds, "t")
GridView1.DataSource = Ds.Tables(0)
GridView1.DataBind()
End Sub
Evet Müşterilerimiz içinde bir sub oluşturduk. Bu sub dışarıdan SQL cümlesini alarak kayıtları listelememizi sağlayacak. Artık projemiz hazır. Projemizi çalıştırdığımızda iller ve tüm kullanıcılar çalışacak. Tabi bunun için de form’un load olayında bu subları çağırmamız gerekecektir.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Sehirler()
Musteriler("Select * from customers")
End If
End Sub
Evet gördüğümüz gibi sehirler sub’ı dropdownlist’i dolduruyor. Musteriler sub’ıda dışarıdan sql cümlesini alarak tüm kayıtları listeliyor. Şimdi seçilen ile göre o ildeki müşterileri grid üzerinde listeleyelim. Bunun için dropdownlist’in SelectedIndexChanged eventine aşağıdaki kodları yazalım.
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
Musteriler("Select * from customers where city=’" + DropDownList1.SelectedValue.ToString + "’")
End Sub
End Class
Gördüğünüz gibi yine müşteriler sub’ını çağırdık. Fakat küçük bir kriter ekleyerek J Dropdownlistten seçilen ile göre artık müşterilerimiz gridde listelenecek. Son olarak isterseniz sayfalar arasında gezinmek için (Paging) gridimizin sayfalama özelliğinide yazalım. Bunun için Gridimizin PageIndexChanging özelliğine aşağıdaki kodları yazalım.
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
Musteriler("Select * from customers")
End Sub
Evet artık projemizi çalıştırdıktan sonra şehir isimleri dropdownlistte, tüm müşteriler de grid üzerinde görüntülenecek. Artık projemizi çalıştıralım.
Evet artık herşey çalışıyor. Bir il seçersek o ile ait kayıtlarda listelenecek. Bunun için dropdownlistten London seçelim. Aşağıda gördüğünüz gibi London’a ait kayıtlar aşağıda listelenmiştir.
Fakat projemizde eksik olan bir şeyler var. Sayfamız hala refresh ile çalışıyor. Dilerseniz bizi rahatsız eden bu eksiklikten kurtulalım. Sayfamızın HTML kısmına gelelim ve HTML kısmında küçük bir düzenleme yapalım.
<atlas:UpdatePanel ID="Customers" runat="server" RenderMode="Inline">
<Triggers>
<atlas:ControlValueTrigger ControlID="DropDownList1" PropertyName="SelectedValue" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Names="Verdana"
Font-Size="X-Small" GridLines="Vertical">
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#DCDCDC" />
</asp:GridView>
</ContentTemplate>
</atlas:UpdatePanel>
Evet, düzenlememizi yaptıktan sonra her şey hazır. Projemizi çalıştırıp sayfamızı incelediğimizde sayfamızdaki her şeyin refresh’siz çalıştığını göreceksiniz. Sayfalar arasında gezinirken, Dropdownlistten herhangi bir il seçerken artık sayfamız refresh olmayacaktır. Evet arkadaşlar bu makalemizde atlasın güzelliklerini ve nimetlerini anlatmaya devam ettik. Ben projdeki CodeBehind ve HTML sayfalarını aşağıya ekledim. Detaylı olarak oradan da inceleyebilirsiniz.
------------------------------------------------------------------------------------------------
Default.aspx.cs
Imports System
Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Sehirler()
Musteriler("Select * from customers")
End If
End Sub
Private Sub Musteriler(ByVal SQLString As String)
Dim Cnn As New SqlConnection("Data Source=localhost; Database=northwind; uid=sa; pwd=")
Dim Da As New SqlDataAdapter(SQLString, Cnn)
Dim Ds As New DataSet
Da.Fill(Ds, "t")
GridView1.DataSource = Ds.Tables(0)
GridView1.DataBind()
End Sub
Private Sub Sehirler()
Dim Cnn As New SqlConnection("Data Source=localhost; Database=northwind; uid=sa; pwd=")
Dim Da As New SqlDataAdapter("Select distinct city from customers", Cnn)
Dim Ds As New DataSet
Da.Fill(Ds, "t")
DropDownList1.DataSource = Ds.Tables(0)
DropDownList1.DataTextField = "City"
DropDownList1.DataValueField = "City"
DropDownList1.DataBind()
End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
Musteriler("Select * from customers")
End Sub
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
Musteriler("Select * from customers where city=’" + DropDownList1.SelectedValue.ToString + "’")
End Sub
End Class
------------------------------------------------------------------------------------------------
Default.aspx
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
<br />
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" Width="208px">
</asp:DropDownList><br />
<br />
<div>
<atlas:UpdatePanel ID="Customers" runat="server" RenderMode="Inline">
<Triggers>
<atlas:ControlValueTrigger ControlID="DropDownList1" PropertyName="SelectedValue" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Names="Verdana"
Font-Size="X-Small" GridLines="Vertical">
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#DCDCDC" />
</asp:GridView>
</ContentTemplate>
</atlas:UpdatePanel>
</div>
</form>
<script type="text/xml-script">
<page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
<references>
</references>
<components>
</components>
</page>
</script>
</body>
</html>