none
(FindControl) DataList'in Ögelerine Erişim ve Ögeler ile İşlem RRS feed

  • Soru

  • Merhabalar,
    Web üzerinde çalışacak olan bir sipariş formunda DataList içerisindeki ddlAdet (DropDownList) değeri değiştirildiğinde lblBirimFiyat (Label) değerine göre lblToplamFiyat (Label) değerinin şekillenmesini istiyorum. Bildiğim kadarıyla birşeyler yaptım ancak hata alıyorum.
    Yada başka bir yol ile yapılabilirmi?
    Yardımıcı olursanız sevinirim...

                string adetAl = ((DropDownList)DataList1.FindControl("ddlAdet")).SelectedValue;
                string fiyatAl = ((Label)DataList1.FindControl("lblBirimFiyat")).Text;
                string toplamFiyatAl = ((Label)DataList1.FindControl("lblFiyat")).Text;
    
                int int_adetAl = Convert.ToInt32(adetAl);
                int int_fiyatAl = Convert.ToInt32(fiyatAl);
                int int_toplamFiyatAl = Convert.ToInt32(toplamFiyatAl);
    
                int_toplamFiyatAl = int_adetAl * int_fiyatAl;
    
                toplamFiyatAl = ((Label)DataList1.FindControl("lblToplamFiyat")).Text;



    10 Şubat 2014 Pazartesi 10:40

Yanıtlar

  • Şu kodlar ile istediğimin bir kısmına ulaştım.

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
            {
                decimal birimFiyat;
                int adet;
                decimal toplam;
                
                TextBox txtTextBox = (TextBox)e.Item.FindControl("TextBox1");
                Label lblToplam = (Label)e.Item.FindControl("lblToplam");
                Label lblBirimFiyat = (Label)e.Item.FindControl("lblBirimFiyat");
    
                if (txtTextBox.Text == "")
                {
                    lblBilgi.Text = "Areas is null";
                }
                else
                {
                    birimFiyat = Convert.ToDecimal(lblBirimFiyat.Text);
                    adet = Convert.ToInt32(txtTextBox.Text);
                    
                    toplam = adet * birimFiyat;
    
                    lblToplam.Text = toplam.ToString();
                }
    
            }


    • Yanıt Olarak İşaretleyen Uğur Karagoz 15 Şubat 2014 Cumartesi 20:37
    • Düzenleyen Uğur Karagoz 15 Şubat 2014 Cumartesi 20:38
    15 Şubat 2014 Cumartesi 20:37

Tüm Yanıtlar

  • Sayfa açıldıktan sonra F12 tuşuna basıp html kodundan dropdown nesnesinin idsi nedir bir bakabilir misiniz?
    10 Şubat 2014 Pazartesi 11:52
  • DropDownList'e benim verdiğim id ddlAdet.

    Dediğiniz gibi baktığımda "ContentPlaceHolder1_DataList1_ddlAdet_0" yazıyor.

    10 Şubat 2014 Pazartesi 12:06
  • Peki datalist'i doldurduğunuz kodlarıda paylaşabilir misiniz.
    10 Şubat 2014 Pazartesi 12:10
  • <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
                    <ItemTemplate>
                        <div class="urunAnaSiparis">
                            <div class="urunResimSiparis">
                                <asp:Image ID="Image1" runat="server" Width="75px" Height="75px" ImageUrl='<%# Eval("RESIM") %>' />
                            </div>
                            <div class="urunIsimSiparis">
                                <asp:Label ID="TAZELIKLabel" runat="server" Text='<%# Eval("TAZELIK") %>' />
                                <br />
                                <asp:Label ID="URUNLabel" runat="server" Text='<%# Eval("URUN") %>' />
                                <br />
                                <asp:Label ID="lblBirimFiyat" runat="server" Text='<%# Eval("FIYAT") %>' />
                                TL
                            </div>
                            <div class="urunAdetSiparis">
                                <asp:DropDownList CssClass="ddls" ID="ddlAdet" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                                    <asp:ListItem>0</asp:ListItem>
                                    <asp:ListItem>1</asp:ListItem>
                                    <asp:ListItem>2</asp:ListItem>
                                    <asp:ListItem>3</asp:ListItem>
                                    <asp:ListItem>4</asp:ListItem>
                                    <asp:ListItem>5</asp:ListItem>
                                    <asp:ListItem>6</asp:ListItem>
                                    <asp:ListItem>7</asp:ListItem>
                                    <asp:ListItem>8</asp:ListItem>
                                    <asp:ListItem>9</asp:ListItem>
                                    <asp:ListItem>10</asp:ListItem>
                                    <asp:ListItem>20</asp:ListItem>
                                    <asp:ListItem>30</asp:ListItem>
                                </asp:DropDownList>
                            </div>
                            <div class="urunSiparisBirim">
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("BIRIM") %>' />
                            </div>
                            <div class="urunSiparisFiyat">
                                <asp:Label ID="lblFiyat" runat="server" Text="Label"></asp:Label > TL
                            </div>
                        </div>
                    </ItemTemplate>
                </asp:DataList>

    10 Şubat 2014 Pazartesi 12:15
  • Arkadaşlar, FindControl harici başka bir yol ile Data şablonlarına ulaşıp işlem yapabilirmiyim?
    12 Şubat 2014 Çarşamba 10:27
  • Neden dataList'in ItemCommand event'ini kullanmıyorsunuz ?

    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Iletişim: Mail Gönder

    12 Şubat 2014 Çarşamba 11:06
    Moderatör
  • Konuya tam hakim değilim de o yüzden sanırım.

    ItemCommand event'te kullanırken aynı şekilde kullanmak yeterli olurmu yoksa ekstra bir şey yazmamız gerekir mi?


    12 Şubat 2014 Çarşamba 17:06
  • Basit bir örnek vereyim, TextBox'a ulaşacağınız zaman ItemCommand Event'ında

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
    { 
    TextBox txtTextBox = (TextBox)e.Item.FindControl("TextBox1");
    }


    Microsoft bu servisi kullanıcılarına yardım etme, Microsoft urunleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ucretsiz sunmaktadır. Bu icerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk ustlenildiği anlamına gelmez. Iletişim: Mail Gönder

    • Yanıt Olarak İşaretleyen Özgür Tekbaş 14 Şubat 2014 Cuma 14:37
    • Yanıt İşaretini Geri Alan Uğur Karagoz 14 Şubat 2014 Cuma 18:20
    12 Şubat 2014 Çarşamba 17:29
    Moderatör
  • Benim tam yapmak istediğim aslında;

    Belli bir filtrelemeye göre gelen DataList içerisinden, Database'ten gelen BirimFiyat değerini alıp DropDownList'ten seçilen Adet değeriyle çarptıktan sonra ToplamFiyat değerini ekrana yansıtmak.
    Ama epey farklı senaryo denememe rağmen olumlu bir sonuç alamadım maalesef.
    İzleyeceğim yol hakkında bir bilgi verebilirseniz çok müteşekkir olurum doğrusu.


    12 Şubat 2014 Çarşamba 17:59
  • protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
    { 
    TextBox txtTextBox = (TextBox)e.Item.FindControl("TextBox1");
    }

    Barış Sarıtaş verdiğiniz kod ile değeri alıp label'ın içerisinde görüntüleyemiyorum. daha doğrusu değeri de alamıyorum.

    Konu hakkında bilgisi olan varmı?

    15 Şubat 2014 Cumartesi 11:40
  • Şu kodlar ile istediğimin bir kısmına ulaştım.

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
            {
                decimal birimFiyat;
                int adet;
                decimal toplam;
                
                TextBox txtTextBox = (TextBox)e.Item.FindControl("TextBox1");
                Label lblToplam = (Label)e.Item.FindControl("lblToplam");
                Label lblBirimFiyat = (Label)e.Item.FindControl("lblBirimFiyat");
    
                if (txtTextBox.Text == "")
                {
                    lblBilgi.Text = "Areas is null";
                }
                else
                {
                    birimFiyat = Convert.ToDecimal(lblBirimFiyat.Text);
                    adet = Convert.ToInt32(txtTextBox.Text);
                    
                    toplam = adet * birimFiyat;
    
                    lblToplam.Text = toplam.ToString();
                }
    
            }


    • Yanıt Olarak İşaretleyen Uğur Karagoz 15 Şubat 2014 Cumartesi 20:37
    • Düzenleyen Uğur Karagoz 15 Şubat 2014 Cumartesi 20:38
    15 Şubat 2014 Cumartesi 20:37