28 Mart 2012 Çarşamba

Nested Master Page içindeki bir kontrole ulaşmak

//Master pageteki Contentplaceholder'u buluruz
ContentPlaceHolder cph = this.Master.Master.FindControl("ContentPlaceHolder1") as 
ContentPlaceHolder;

//Daha sonra o contentplace içine koyduğumuz nestedpage teki kontrole ulaşırıs
Image img = cph.FindControl("ImgMember") as Image;

SQL Replace

UPDATE dbo.Countries SET Name = REPLACE(Name, '&nbsp', ' ') where name like '%&nbsp%'

içinde &nbsp geçen tüm ülkeleri getirir ve o değeri boşlukla değiştirir.

22 Mart 2012 Perşembe

Ajax(Jquery) işlemleri

Default.aspx


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="ajaxApp._default" %>

<!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>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">

        function CallAspxPage() {
            $.ajax({
                type: 'GET',
                url: 'Ajax1.aspx',
                success: function (result) {
                    $('#sonuc').html(result);
                },
                error: function () {
                    alert('Talep esnasında sorun oluştu. Yeniden deneyin');
                }
            });
        }

        //aspx sayfasına querystring ile parametre verme
        function CallAspxPageWithQueryString() {
            $.ajax({
                type: 'GET',
                url: 'Ajax1.aspx',
                data: "name=recep&surname=günay",
                success: function (result) {
                    $('#sonuc').html(result);
                },
                error: function () {
                    alert('Talep esnasında sorun oluştu. Yeniden deneyin');
                }
            });
        }

        // xml formatında web servis çağırma
        function CallWebserviceXML() {

            $.ajax({
                type: 'POST',
                url: 'http://localhost:2529/webservice1.asmx/GetAllCustomers',
                data: 'start=c&kactane=2',
                success: function (result) {

                    $(result).find('myCustomers').each(function () {

                        $("#sonuc").append($(this).find('name').text() + " / " + $(this).find('adress').text() + "<br/>");

                    });
                },
                error: function () {
                    alert('Talep esnasında sorun oluştu. Yeniden deneyin');
                }
            });
        }

        //json formatında webservis çağırma
        function CallWebserviceJson() {

            $.ajax({
                type: 'POST',
                url: 'http://localhost:2529/webservice1.asmx/GetAllCustomers',
                data: '{ "start":"c","kactane":"4" }',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (result) {
                    $.each(result.d, function (i) {
                        $("#sonuc").append(this.name + " / " + this.adress + "<br/>");
                    });
                },
                error: function () {
                    alert('Talep esnasında sorun oluştu. Yeniden deneyin');
                }
            });
        }

        //Bir aspx sayfasındaki methodu çağırmak, methodun başına  [System.Web.Services.WebMethod] koymayı unutma
        function CallPageMethod() {
            $.ajax({
                type: 'POST',
                url: 'Default.aspx/jQueryPageMethod',
                data: '{ "name":"Recep" }',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (result) {
                    $('#sonuc').html(result.d);
                },
                error: function () {
                    alert('Talep esnasında sorun oluştu. Yeniden deneyin');
                }
            });
        }
      
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="text" id="text1" />
        <input type="button" value="Seç" onclick="CallWebserviceJson();" /><br />
        <span id="sonuc"></span>
    </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ajaxApp
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [System.Web.Services.WebMethod]
        public static string jQueryPageMethod(string name)
        {
            return "<h3>jQuery - PageMethod Talebi</h3>Merhaba " + name;
        }
    }
}



/---------------------------------------------------------------------/
webservice1.asmx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace ajaxApp
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public List<myCustomers> GetAllCustomers(string start, string kactane)
        {
            int i=Convert.ToInt32(kactane);

            DB context = new DB();
            List<Customer> customerList = new List<Customer>();
            customerList = context.Customers.Where(p => p.CompanyName.StartsWith(start)).Take(i).ToList();

            List<myCustomers> newList = new List<myCustomers>();

            foreach (var item in customerList)
            {
                newList.Add(new myCustomers() { name = item.CompanyName, adress = item.Address });
            }


            return newList;
        }
    }


}

 /---------------------------------------------------------------/
myCustomer.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ajaxApp
{
    public class myCustomers
    {
        public string name { get; set; }
        public string adress { get; set; }
    }
}
 /-------------------------------------------------------------------------/

Ajax1.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ajaxApp
{
    public partial class Ajax1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                lblNameSurname.Text = Request.QueryString["name"] + " " + Request.QueryString["surname"];
            }

        }
    }
}







2 Şubat 2012 Perşembe

Asp.Net ile web servis çağırma

Daha önceki yazımda genel olarak webservis nedir, hangi amaçlarla kullanılırlar onlardan bahsetmiştim. Ayrıca temel bir iki uygulamayla web servislerin nasıl oluşturulduğuna bakmıştık. Bu yazımda ise daha önce oluşturduğumuz bir web servisi, başka bir projeye nasıl çağırırız ve çağırdığımız webservis aracılığı ile verileri nasıl manupule ederiz onu göstericem. Daha öncede bahsettiğim gibi web servisler platform bağımsızdır. Hemen hemen tüm programlama dillerinde webservileri çağırıp kullanabilirirz. Ben asp.net(c#) ile hazırlanmış bir web servisi yine asp.net (c#) bir uygulamada çağırıp kullanacağım. Siz java, actionscript vb. başka herhangibir dildede çağırıp kullanabilirsiniz.
Öncelikle başka bir projeden webservisi çağırabilmemiz için, hazırladığımız web servisin erişilebilir bir yerde olması gerekir. Erişime her yerden açık olan en güzel yer tabiî ki internettir. Web servislerinize online ortama koyarak onlara url ile ulaşabilirsiniz. Ben şimdilik, visual studio’nun bize sağladığı sanal local web server ile webservisime ulaşacağım. Daha önceki yazımda bahsettiğim projeyi visual studio da açıp, “start debugging” diyerek çalıştırıyorum ve çalışır durumda bırakıyorum(web servisin local url’sini almak için). Örnek sayfa aşağadadır.

Gördüğünüz url benim webservisimin adresidir. Şimdilik bu proje bir kenarda çalışır durumda kalsın. Siz yeni bir visual studio açın ve ordanda yeni bir web Project oluşturunuz. Projeyi oluşturduktan sonra ise, “Solution Explorer” segmesinden , “references” sağ tıklayarak “add service reference” deyin( add web reference olarakta gözükebilir ). Örnek ekran aşağadadır.


Daha sonra karşınıza aşağadaki ekran gelecektir.

Bu ekranın “address” kısmına açık diğer projedeki webservisimizin url’sini yazınız ve sağ tarafındaki “Go” düğmesine tıklayınız. Karşınıza, ekranın sol tarafında gördüğünüz gibi web servisimizin adı gelecektir. Bunun üzerine tıkladığımızda, altına “myfirstwebservicesoap” gelecektir. Bunu seçtiğimizde ise ekranın sağındaki boş kutuda ise(operations) web servisimizin içne yazdığımız method isimleri gelecektir. Örnek ekran aşağadadır.

Bu ekranda ayrıca alt tarafta namespace alanı vardır. Burda projemiz içinde webservise ulaşmak için bizim verdiğimiz namespace ismi yer alır. Herhangibir isim verebilirsiniz. Her şey tamam. Şimdi OK düğmesine basınız.

Gördüğünüz gibi “solution Explorer” segmesi altındaki service referanslar altına webservisimizi referans göstermeyi başardık. Artık her şey bu webservis içindeki daha önce yazdığımız methodları kullanmaya geldi. Önceki yazımdan hatırlarsanız, webserviste “addMember “ diye bir methodumuz vardı. Şimdi bu methodla veritabanına hiçbir veritabanı işlemi yapmadan veri ekleyebiliriz.
Öncelikle kullanıcı arayüzü için bir aspx sayfası oluşturalım. Bu sayfada member eklemek için textbox lardan oluşan bir arayüz oluşturalım. Sayfanın source ve design ı aşağadadır.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="webserviscagirma._default" %>

<!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>
        <table border="0" cellpadding="3" cellspacing="3" style="background-color: Olive">
            <tr>
                <td>
                    Ad
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtAd" />
                </td>
            </tr>
            <tr>
                <td>
                    Soyad
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtSoyad" />
                </td>
            </tr>
            <tr>
                <td>
                    Email
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtEmail" />
                </td>
            </tr>
            <tr>
                <td>
                    Cinsiyet
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtcinsiyet" />
                </td>
            </tr>
            <tr>
                <td>
                    Sehir
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtSehir" />
                </td>
            </tr>
            <tr>
                <td>
                    Ilce
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtIlce" />
                </td>
            </tr>
            <tr>
                <td>
                </td>
                <td>
                    <asp:Button Text="Kaydet" runat="server" ID="btnSave" onclick="btnSave_Click" />
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;</td>
                <td style="color:Black">
                    <asp:Literal ID="ltrlSonuc" runat="server"></asp:Literal>
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

Arayüzümüz hazır, şimdi bu ekranın kod tarafına geçip kodlamaya başlayalım.
Kaydet butonunun “click” olayı içine;

myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient webservis = new myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient();

Kod satırı ile web servis nesnemizi yaratalım. (myFirstWebServiceNameSpace=referansı eklerken verdiğimiz namespace adı).
Daha sonra yarattığımız nesnenin adını yazıp noktaya bastığımızda, web servisimizdeki tüm methodların geldiğini göreceğiz. Örnek sayfa aşağadadır.



“AddMember” methodunu seçtikten sonra, gördüğünüz gibi bu methodun aldığı parametreler bile bize gösteriliyor.

Parametre olarak textbox lardan aldığımız ilgili değerleri verdikten sonra kodun son hali aşağadaki gibi oluyor.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace webserviscagirma
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient webservis = new myFirstWebServiceNameSpace.MyFirstWebServiceSoapClient();

            bool result = webservis.AddMember(txtAd.Text, txtSoyad.Text, txtEmail.Text, txtcinsiyet.Text, txtSehir.Text, txtIlce.Text);

            if (result)
            {
                ltrlSonuc.Text = "Veri başarıyla kaydedildi";
            }
            else
            {
                ltrlSonuc.Text = "Kayıt sırasında bir problem oluştu";
            }
          

        }

      
    }
}

Webservisin “addMember” methodunu hazırlarken,” return value” olarak bool bir değer vermiştik.
Şimdi projemizi çalıştıralım, arayüzden değerleri girelim ve kaydete basalım.
Projemizde herhangibir veritabanı işlemi yapmadan, web servis aracılığı ile veritabanımıza veri ekledik. Şimdi diğer methodlarıda siz deneyiniz.


Umarım faydalı olmuştur. Gelecek yazımda, şifreli web servislerden bahsetmeyi düşünüyorum.