GridView içindeki kontrole erişme (Findcontrol)

İki önceki yazımızda gridview içerisine templatefield içerisinde textbox eklemiştik. Bu yazımızda kontrol içerisindeki kontrollere nasıl erişebiliyoruz buna bakacağız. Konu bütünlüğü bozulmasın diye gridview içerisindeki kontrollere erişmeye çalışıp, çeşitli denemeler yapacağız. Örnekte kullnacağımız gridviewimiz şu şekilde.

        <asp:GridView runat="server" ID="GridView1" CssClass="grid" ShowFooter="true" AutoGenerateColumns="false">
            <HeaderStyle CssClass="header" />
            <RowStyle CssClass="row" />
            <AlternatingRowStyle CssClass="alternate" />
            <FooterStyle CssClass="footer" />
            <PagerStyle CssClass="pager" />
            <Columns>
                <asp:BoundField DataField="id" HeaderText="Id" />
                <asp:BoundField DataField="tarih" HeaderText="Tarih" />
                <asp:BoundField DataField="sessionid" HeaderText="Oturum Kimliği" />
                <asp:TemplateField HeaderText="Bu bir checkbox">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="cbCheckBox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bu bir textbox">
                    <ItemTemplate>
                        <asp:TextBox runat="server" ID="txtTextBox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Bu bir literal">
                    <ItemTemplate>
                        <asp:Literal runat="server" ID="ltrLiteral" Text='<%#Eval("id") %>' />
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:Button runat="server" ID="btnGonder" Text="Gönder" OnClick="btnGonder_click" />
                    </FooterTemplate>
                 </asp:TemplateField>
             </Columns>
        </asp:GridView>

Okumaya devam et GridView içindeki kontrole erişme (Findcontrol)

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