14 Mart 2012 Çarşamba

Mükemmel Fatiha Süresi


16 Şubat 2012 Perşembe

Asp.net te Auto Complate Extender İle otomatİk tamamlayIcI yapImI


Bu makalemizde Ajax Extension sekmesi altında bulunan Auto Complate Extendernesnesinin kullanımını anlatacağım.
Auto Complate Extender kontrolü otomatik tamamlama işlemlerimizde kullandığımız bir kontroldür. örnek vermek gerekirse google.com da kullanılan özellik gibidir.
 
örneğimizi inceledikten sonra Auto Complate Extender ın temel özellikleri aşağıdaki gibidir. 

TargetControlID = Kontrolün hangi nesne için geçerli olacağını belirtir. 
(Ör: isim) 

ServicePath = Otomatik Tamamlama özelligi için kullanilacak XML Web Servisi’nin Adresini belirtir. 
(Ör: isim.asmx) 

ServiceMethod = Belirtilen Web Servisinde kullanacagimiz Method’u belirtir. 
(Ör: isimAra) 

Enabled = Çalisabilirligini belirtir. 
(Ör: True ya da False) 

MinimumPrefixLength = Otomatik Tamamlama’nin en az kaç karakter ile çalisagini belirtir. 
(Ör: 1,2,3...) 

Temel bilgilerimizi inceledikten sonra yeni bir Asp.net projesi oluşturuyoruz. Kısaca bir senaryo oluşturacak olursak. veri isminde bir access veritabanı oluşturup isim adında bir tablo oluşturuyoruz.
Oluşturduğumuz projede Default.aspx sayfasını aşağıdaki gibi yapıyoruz.
 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs"Inherits="_Default" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"tagprefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title></head><body><form id="form1" runat="server">
    <div><asp:ScriptManager ID="ScriptManager1" runat="server">       </asp:ScriptManager>
    <asp:TextBox ID="isim" runat="server" Width="200px"></asp:TextBox>    <cc1:AutoCompleteExtender ID="AutoComplete" runat="server"    Enabled="True"ServicePath="isim.asmx" TargetControlID="isim"ServiceMethod="isimAra" MinimumPrefixLength="2" CompletionInterval="10"ShowOnlyCurrentWordInCompletionListItem="False" FirstRowSelected="True"   CompletionSetCount="5" UseContextKey="True"></cc1:AutoCompleteExtender>
</div></form></body></html> 
isim.asmx adında Bir tane Web Service oluşturuyoruz.
 Web Service oluşturduktan sonra App_code kısmında isim.cs adında bir class oluşacaktır o sayfamızı aşağıdaki gibi düzenliyoruz.
using System;using System.Collections;using System.Configuration;
using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Linq;using System.Data;using System.Data.OleDb;
[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.Web.Script.Services.ScriptService()]public class isim : System.Web.Services.WebService {
    public isim () {   
    }
    [WebMethod]    [System.Web.Script.Services.ScriptMethod()]    public string[] isimAra(string prefixText)    {        object[] prmtr = { prefixText };        OleDbConnection bg = new OleDbConnection("Provider=Microsoft.ace.oledb.12.0; data source=" + Server.MapPath("/App_Data/veri.accdb") + "");
        bg.Open();
        OleDbCommand cmd = new OleDbCommand("Select Top 10 * From isimler Where Ad like @ad + '%'", bg);
        cmd.Parameters.Add("ad", prefixText);
        OleDbDataAdapter adap = new OleDbDataAdapter(cmd);        DataTable dt = new DataTable();        adap.Fill(dt);        adap.Dispose();        cmd.Dispose();        bg.Close(); 
        ArrayList FirmaListe = new ArrayList();        for (int i = 0; i < dt.Rows.Count; i++) FirmaListe.Add(dt.Rows[i]["ad"].ToString());
        return (string[])(FirmaListe.ToArray(typeof(string)));    }   
}

Temel olarak kodlarımız yukarıdaki gibidir. Örnek çalışmayı görmek için TIKLAYIIZ