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..

C#.Net ile DataGridView içinde veri gösterimi..

C#.Net öğrenmeye, ilgilenmeye yeni yeni başlıyorum. Bildiklerimi, gördüklerimi ve yaptıklarımı sizlerle paylaşmak istedim. Webde bir çok kaynak bulunmasına rağmen sıfırdan başlayan birinin işine yarayacak kaynak malesef oldukça az. Aşşağıdaki kodlar sayesinde veritabanındaki kayıtları oldukça basit bir şekilde listeleyebilir veya filtreleyebilirsiniz. Bu yapı sayesinde her seferinde veritabanı bağlantısını ve datagridview ile ilgili diğer tanımlamaları yapmak zorunda kalmıyorsunuz. Sadece istediğiniz sql sorgusunu yolluyorsunuz okadar.. Terimlerde veya ifadelerimde hata varsa affola :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication2
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public void Form2_Load(object sender, EventArgs e)
        {
            griddoldur("select * from tabloadi"); // form yüklendiğinde, yani program ilk çalıştığında bu sorguyla birlikte datagridview1 nesnemizi dolduruyoruz.

        }

        public void griddoldur(string sqlCumle) {
            string ConStr = "Server=veritabani_adresi; Database=veritabani_adi; uid=kullanici_adi; " +
                               "pwd=sifre;pooling=true; connection lifetime=10; connection timeout=5; packet size=1024;";
            SqlConnection conn = new SqlConnection(ConStr);
            string sql = sqlCumle; // sql cümlemiz fonksiyonumuzdan değişken bir biçimde geliyor. bkz: griddoldur(string sqlCumle)
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0]; // veritabanına bağlanıp son olarakda dataGridView1 veri kaynağını dataadaptere bağlıyoruz.
        }

        private void buton1_Click(object sender, EventArgs e)
        {
            griddoldur("select * from digertabloadi"); // butona tıkladığımızda diğer tablodaki verileri datagridview1 nesnesinde görüntüleyebiliriz.
        }

        private void buton2_Click(object sender, EventArgs e)
        {
            griddoldur("SELECT * from tabloadi where alanadi = "+textbox1.text+" ") // istediğimiz gibi şekillendirebiliriz. bu sayede herseferinde yeniden yeniden kodlar yazmamıza gere kalmaz.
        }

    }
}