MasterPage’ den diğer sayfadaki bir nesneye erişmek. FindControl

Geçtiğimiz haftalarda apostylee.com un .Net versiyonunu sizlere duyurmuştum. Header kısmındaki arama kutusuna girilen değeri veritabanında aratıp sonucu default.aspx sayfamdaki DataList te göstermek istediğimde, direk dataliste erişemediğimi farkettim. Halbuki windows form da nesnenin özelliklerine girip Modifiers kısmından Private değerini Public ile değiştirdiğimizde erişebiliyorduk. Web Form da durum biraz daha farklı ! Belki başka bir yoluda fakat benim bildiğim ve incelediğim kadarıyla herkesin kullandığı yöntem FindControl. Esasında Javascript deki getElementById ifadesine benziyor. Adından da anlaşılacağı gibi kontrolü arayıp bulmaya yarıyor :) Sadece sayfalar arasında değil nesne içindeki nesneyede bu sayede erişebiliyoruz. Örneğin bir GridList imiz var ve içinde de TextBox ımız. Textboxa erişmek için bu yöntemi kullanabiliyoruz. Yani öğrenilmesi anlanması gereken bir konu.

Kullanımı bir örnekle görelim;

		//Normalde bu datalist default.aspx sayfasında, bu kodlar ise MasterPage.Master.cs sayfamızda.
		//dl adındaki değişkene; ContentPlaceHolder1 içinde bulunan Datalist1 adındaki DataList nesnesini buluyoruz.
        DataList dl = ((DataList)ContentPlaceHolder1.FindControl("DataList1"));
        dl.DataSource = ds; // Data Sourcesini belirliyoruz veya ne istiyorsak..
        dl.DataBind();

		// Yine default.aspx sayfasında bulunan sayfalama adındaki Label Nesnesini görünmez yapıyoruz.
       ((Label)ContentPlaceHolder1.FindControl("sayfalama")).Visible = false;

JavaScript teki getElementById metodunda direk id yi bulup işlem yapabiliyoruz fakat; burada ilk önce aranan nesnenin ne olduğunu belirtmemiz gerekiyor. C# adı üstünde nesne tabanlı bir yazılım dili. Umarım faydalı olmuştur. Bir sonraki .Net macerasında görüşmek üzere..

  • http://none ruk

    Çok faideli oldu kardeş sağolasın:)