none
Repeater içindeki ImageButton Hk. RRS feed

  • Soru

  • Merhaba,

    Repeater içinde ki ImageButtonlara ulaşarak if koşulu ile göster göstermeme olayını yapmak istiyorum.

    Şöyle kod yazdım.

             void SlideCek()
        {
            DataTable dt = System.GetDataTable("Select * from xSlide");
            Repeater1.DataSource = dt;
            Repeater1.DataBind();

       }

        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {

            SqlConnection baglantii = System.baglan();
            SqlCommand cmdReklam = new SqlCommand("Select Yayin from xSlide",baglantii);
            SqlDataReader drReklam = cmdReklam.ExecuteReader();
            if (drReklam.Read())
            {
                if (drReklam["Yayin"].ToString() == "0")
                {
                     ((Repeater1.FindControl("btn_YayindanCikart")) as LinkButton).Visible = true;
                     ((Repeater1.FindControl("btn_yayinaAL")) as ImageButton).Visible = false;
                }

                if (drReklam["Yayin"].ToString() == "1")
                {
                    ((Repeater1.FindControl("btn_YayindanCikart")) as ImageButton).Visible = false;
                    ((Repeater1.FindControl("btn_yayinaAL")) as ImageButton).Visible = true;
                }
            }
            drReklam.Close();
            cmdReklam.Dispose();

    }

    Yapmak istediğim Eğer Yayin alanı 1 ise btn_YayindanCikart butonunun aktif olmasını diğer butonun pasif olmasını istiyorun. ama başaramadım yardımcı olabilir misiniz ?

    19 Haziran 2013 Çarşamba 10:55

Yanıtlar

  • Yayin.ToString() == "0" seklinde degil, if(Yayin == true) ya da if(Yayin) seklinde kullanmalisiniz. Ayrica evet, bit yapmalisiniz.
    • Yanıt Olarak İşaretleyen SerkanKLC 19 Haziran 2013 Çarşamba 12:31
    19 Haziran 2013 Çarşamba 12:10

Tüm Yanıtlar

  • Tekrar veritabanina baglanmaniza gerek yok, asagidaki sekilde kontrol edebilirsiniz;

    //Yayin kisminin boolean oldugunu varsayarak


    bool Yayin = Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem, "Yayin"));

    ImageButton lb = (ImageButton)(e.Item.FindControl("btn_yayinaAL"));

    ImageButton lb1 = (ImageButton)(e.Item.FindControl("btn_YayindanCikart")); if (Yayin) {

    lb.Visible=true;

    lb1.Visible=false; } else { lb.Visible=false; 

    lb1.Visible=true

    }



    19 Haziran 2013 Çarşamba 11:41
  • Her item için tekrar database'e bağlanmak çok gereksiz olmuş açayip performans düşürür.

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
    var durum = (bool)((DataRowView)e.DataItem)["Yayın"]; ((Image)e.Item.FindControl("btn_YayindanCikart")).Visible = durum;
    ((Image)e.Item.FindControl("btn_yayinaAL")).Visible = !durum; }

    gibi bişey yeterli olması lazım


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    19 Haziran 2013 Çarşamba 11:45
    Moderatör
  • Tekrar veritabanina baglanmaniza gerek yok, asagidaki sekilde kontrol edebilirsiniz;

    //Yayin kisminin boolean oldugunu varsayarak


    bool Yayin = Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem, "Yayin"));

    ImageButton lb = (ImageButton)(e.Item.FindControl("btn_yayinaAL"));

    ImageButton lb1 = (ImageButton)(e.Item.FindControl("btn_YayindanCikart")); if (Yayin) {

    lb.Visible=true;

    lb1.Visible=false; } else { lb.Visible=false; 

    lb1.Visible=true

    }



    Cevap için teşekkür ederim. bool ile devam edersek sanırım benin Yayin alanının tipi "Bit" mi olmak zorunda ve yayın alanının tipini bit yaparsam aşağıda ki gibi çalışır mı ?

            protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {  

    bool Yayin = Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem, "Yayin"));
            ImageButton lb = (ImageButton)(e.Item.FindControl("btn_yayinaAL"));
            ImageButton lb1 = (ImageButton)(e.Item.FindControl("btn_YayindanCikart"));

              if (Yayin.ToString() == "0")
                {
                    lb.Visible = true;
                    lb1.Visible = false;
                }
                else

                lb.Visible = false;
                lb1.Visible = true;

    }


    19 Haziran 2013 Çarşamba 11:54
  • Yayin.ToString() == "0" seklinde degil, if(Yayin == true) ya da if(Yayin) seklinde kullanmalisiniz. Ayrica evet, bit yapmalisiniz.
    • Yanıt Olarak İşaretleyen SerkanKLC 19 Haziran 2013 Çarşamba 12:31
    19 Haziran 2013 Çarşamba 12:10
  • Teşekkürler.
    19 Haziran 2013 Çarşamba 12:31