ASP.NET Repeater içerisindeki kontrollere erişim
3761 görüntüleme

Merhabalar,

Bu yazımızda ASP.NET Repeater içerisindeki nesnelere erişimi bir örnek ile yapacağız. Veri tabanında aşağıdaki gibi bir tablo oluşturuyoruz.

Tablomuzun içeriğini ben aşağıdaki şekilde doldurdum siz istediğinizi yapabilirsiniz.

Veritabanı tarafını hallettik. Şimdi Visual Studio ile yeni bir web site oluşturuyoruz. Default.aspx ve LİNQ To SQL Classess ekliyorum. veritabanı bağlantısını yaptıktan sonra Default.aspx sayfamıza aşağıdaki kodları yazıyoruz.

<form id="form1" runat="server">
        <br />    
    </div>
        <table class="auto-style1">
            <tr>
                <td valign="top" class="auto-style2">
   <asp:Repeater ID="Repeater1" runat="server"
            onitemcommand="Repeater1_ItemCommand">
        <HeaderTemplate>
        <table>
        <tr>
        <td>
        <b><asp:Label ID="Label1" runat="server" Text="Ad Soyad" Font-Names="Tahoma"></asp:Label></b>
        </td>
        <td>
        <b>
            <asp:Label ID="Label2" runat="server" Text="Adres" Font-Names="Tahoma"></asp:Label></b>
        </td>
        <td>
        <b>
            <asp:Label ID="Label5" runat="server" Text="İşlem" Font-Names="Tahoma"></asp:Label></b>
        </td>
        </tr>
        </HeaderTemplate>
        <ItemTemplate>
        
            
                <asp:Label ID="lblID" runat="server" Text=<%# Eval("ID") %> Visible="false" ></asp:Label></td>
       <tr> <td>
       <asp:Label ID="Label3" runat="server" Text=<%# Eval("AdSoyad") %> Font-Names="Tahoma" ></asp:Label>
        </td>
        <td>
        <asp:Label ID="Label4" runat="server" Text=<%# Eval("Adres") %> Font-Names="Tahoma" ></asp:Label>
        </td>
        <td>
            <asp:Button ID="Butons" runat="server" Text="Detay" CommandName="Buton"/>
        </td>
        </tr>
        </ItemTemplate>
        
        <FooterTemplate>
        </table>
        </FooterTemplate>
        </asp:Repeater>    
                </td>
                <td valign="top" class="auto-style1">
                    <asp:Panel ID="Panel1" runat="server" Visible="False">
                        <asp:Label ID="lblAd" runat="server" Font-Names="Tahoma"></asp:Label>
                        <br />
                        <asp:Label ID="lbladres" runat="server" Font-Names="Tahoma"></asp:Label>
                        <br />
                        <asp:Label ID="lblTel" runat="server" Font-Names="Tahoma"></asp:Label>
                        <br />
                        <asp:Label ID="lblMeslek" runat="server" Font-Names="Tahoma"></asp:Label>
                        <br />
                        <br />
                        <br />
                        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Vazgeç" />
                    </asp:Panel>
                </td>
            </tr>
        </table>
    </form>

Repeater içerisinde veri tabanından ID leri çektiğimiz labelimizi gizliyoruz kullanıcıya göstermemize gerek yok. Sonra f7 ile kod kısmımıza geçiyoruz ve aşağıdaki kodları yazıyoruz.

 vtDataContext db = new vtDataContext();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                loadData();
            }
        }
       
        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Buton")
            {
                for (int i = 0; i <= Repeater1.Items.Count; i++)
                {
                    Label lblID = (Label)Repeater1.Items[e.Item.ItemIndex].FindControl("lblID");
                    int id =Convert.ToInt32(lblID.Text);
                    Panel1.Visible = true;
                    var kisi = (from j in db.TblDenes
                                where j.ID == id
                                select j).SingleOrDefault();
                    lblAd.Text ="<b>Adı Soyadı :</b> "+ kisi.AdSoyad;
                    lbladres.Text = "<b>Adres :</b> " + kisi.Adres;
                    lblTel.Text = "<b>Telefon :</b> " + kisi.Telefon;
                        lblMeslek.Text="<b>Meslek :</b> " + kisi.Meslek;
                }

            }
        }

        
        private void loadData()
        {
            
            var data = from i in db.TblDenes
                       select i;
            Repeater1.DataSource = data;
            Repeater1.DataBind();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Panel1.Visible = false;
        }

Prejomizi çalıştırdığımızda ekran çıktısı aşağıdaki gibi olacaktır.

Repeater içerisindeki her bir detay butonuna tıkladığımızda o satırın detayını panel1 içerisinde yerleştirmiş olduğumuz labellere atamış oldu.

Bir sonraki yazımızda görüşmek üzere hoşça kalın.


Bildiklerimizi paylaşıyoruz, bilmediklerimizi öğreniyoruz.
biz bunları yapıyoruz ya siz...
© 2016 Bildiklerimiz.Net Tüm hakları saklıdır.