• 10-03-2013, 00:15:43
    #1
    Arkadaşlar şöyle bir sorunum var sizlere baştan acıklıyım ilk önce yapmak istedıgım olayı şudur:
    repeater içinde bulunan bir ImageButton a tıklanınca bir devereye gircek işlemler sunlardır:

     <asp:ImageButton ID="ImageButton1" runat="server" CommandName="Like" CommandArgument='<%#Eval("Id")%>' ImageUrl="~/like.png"  />
                                </td>
    RptItiraflar_ItemCommand:

    if (e.CommandName == "Like")
                {
    
                    string like = ds.Tables[0].Rows[0]["I_Like"].ToString();
                    int like_deger = Convert.ToInt32(like);
                    like_deger++;
                    if (e.Item.ItemType == ListItemType.AlternatingItem | e.Item.ItemType == ListItemType.Item)
                    {
                        Label lbl = (Label)e.Item.FindControl("LblLike");
                        lbl.Text = like_deger.ToString();
                        funk.LikeUpdate(e.CommandArgument, like_deger);
                        ImageButton imglike = (ImageButton)e.Item.FindControl("ImageButton1");
                        imglike.Enabled = false;
    
                        ImageButton imgdislike = (ImageButton)e.Item.FindControl("ImageButton2");
                        imgdislike.Enabled = false;
                    }
    
                }
    bu şekilde çalıştırınca aldıgım hata şudur:


    ben bu hatayı araştırdım ve page_load da postback kontrolu ile çözdum:
     protected void Page_Load(object sender, EventArgs e)
            {
                
                try
                {
                    if (!Page.IsPostBack)
                    {
                        RptItiraflar.DataSource = funk.ItirafGetir();
                        RptItiraflar.DataBind();
                   
                    }
    
                }
    Şimdi Soruna Geldik:
    default.aspx sayfamda sayfalama yapmak istedigim için CollectionPager.dll ile sayfalama yaptım şu şekilde sayfalama işlemini şu şelikde yaptım ön tarafdaki kodu yazmıyacagım direk arkadaki kodu yazıyorum (page_load)
    if (!Page.IsPostBack)
                    {
                     
                        SqlDataAdapter da = new SqlDataAdapter("select * from Itiraflar order by Id desc ", bag);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
    
                        CollectionPager1.DataSource = dt.DefaultView;
                        CollectionPager1.BindToControl = RptItiraflar;
    
                        RptItiraflar.DataSource = CollectionPager1.DataSourcePaged;  //Pager'ımızın datasource'u
                        RptItiraflar.DataBind();
                    }
    Page.IsPostBack kontrolü yapınca ikinci sayfaya tıkladıgımda repeater boş geliyor bnde Page.IsPostBack kontrolunu kaldırdıgımda sayfalama çalışıyor ancak bu seferde RptItiraflar_ItemCommand deki kodlar çalışmıyor işte sorunum budur hem sayfalama yapmak hemde RptItiraflar_ItemCommand deki kodları çalıştırmak nasıl yapacagım

    işte sorunum budur yardımlarınızı bekliyorum

    not: EnableEventValidation="true" hatasını aşmak için aşagıdaki kayıt satırnı yazınca yine çalışmıyor RptItiraflar_ItemCommand
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="KAU_Itiraf._Default" EnableEventValidation="true" %>
  • 10-03-2013, 14:55:35
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Repeater'ı 2 kez bind ediyorsun. Gerek yok.
    CollectionPager1.DataSource = dt.DefaultView;
    CollectionPager1.BindToControl = RptItiraflar;
    RptItiraflar.DataSource = CollectionPager1.DataSourcePaged;