2011-06-24 16 views
-1

私は最近、LINQを使用してデータベースから取得した多数の製品を表示するリストビューを作成しました。製品が非常に多いので、検索するのが面倒すぎるように、ページに同時にすべての商品を掲載することは望ましくありません。代わりに、私はpaginatonを追加したい。C#DataPagerヘルプ!

これを行う方法は、DataPagerを作成し、これをListviewにリンクすることです。私の問題は、サイトがエラーのためにもう実行されないことです。 "'LV_Pro_PagepropertiesChanging'のオーバーロードはdelegate 'System.Event.Handler'と一致しません。"私のコードが正しかったように(私にとってはとにかく!)、私はむしろこれに困惑しています。

誰かがこれを見て、私がこれを正しく設定しているかどうかを確認できますか?誰かが別の方法を提案できる場合は、それも素晴らしいでしょう。

ポケットベル:

<asp:DataPager ID="DataPagerPro" runat="server" 
      PagedControlID="LV_Products" 
      PageSize="8"> 
    ... 
</asp:DataPager> 

リストビュー:

<asp:ListView ID="LV_Products" runat="server" 
     DataKeyNames="ProductID"   
     OnItemDataBound="LV_Products_ItemDataBound" 
     OnPagePropertiesChanged="LV_Pro_PagePropertiesChanging"> 

マイコマンド:

protected void LV_Pro_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e) 
{ 
    this.DataPagerPro.SetPageProperties(e.StartRowIndex, e.MaximumRows, false); 
    LV_Products.DataBind(); 
} 

乾杯。


protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack && !Page.IsCallback) 
    { 
     using (DataClasses_ECDataContext db = new DataClasses_ECDataContext()) 
     { 
      if (RouteData.Values["tagnames"] != null) 
      { 
       string tagNames = RouteData.Values["tagnames"].ToString(); 
       string[] taglist = tagNames.Split('/'); 

       object SubCatID = codesnippets.Decrypt(taglist[1] + "=", true); 
       if (SubCatID.ToString().Trim() != "INVAILD") 
       { 
        int SubCat = int.Parse(SubCatID.ToString()); 

        DT_SubCategory sub = db.DT_SubCategories.Single(x => x.SubCatID == SubCat); 

        ViewState.Add("SubCatID", SubCat); 

        LB_Title.Text = sub.SubcatName; 
        LB_Description.Text = sub.SubCatDescription = "<p>" + sub.SubCatDescription.Replace("\r\n", "</p><p>") + "</p>"; 
        LB_SubCategory.Text = " " + sub.SubcatName + " Range"; 

        // var SubCatLink = db.DT_SubProLinks.Single(i => i.SubCatID == int.Parse(ViewState["SubCatID"].ToString())); 

        var productlink = db.DT_SubProLinks.Where(v => v.SubCatID == int.Parse(ViewState["SubCatID"].ToString())).Select(v=>v.ProductID); 


        var product = from x in db.DT_Products join v in productlink on x.ProductID equals v 

            //where x.ProductID == SubCatLink.ProductID && x.Enabled == true 
            select new 
            { 
             x.ProductName, 
             x.ProductID, 
             x.Sale_Price, 
             Link = RouteTable.Routes.GetVirtualPath(null, "Product-by-tag", codesnippets.RouteLink(x.ProductID, x.ProductName, char.Parse(taglist[2]))).VirtualPath, 
            }; 

        LV_Products.DataSource = product; 
        LV_Products.DataBind(); 

       } 
      } 
     } 
    } 
+0

残念なことに、非常に明確な質問ではない私に外国人に見える – Liam

答えて

2

あなたは、ListViewコントロールのマークアップで間違ったイベントに結合されています。
OnPagePropertiesChanging代わり OnPagePropertiesChanged

マークアップ

OnPagePropertiesChanging="LV_Pro_PagePropertiesChanging" 
+0

ありがとう!今度はページがリンクしません:( – Callum

+0

@Callum:リストビューのバインディングコードがまだ動作していない場合は、投稿してください。ページビュー内でlistviewをバインドしていることを確認してください!ispostbackイベント – naveen

+0

コード、 – Callum

1

ナインプラス8のイベントを使用しますか?よくそれはそれではないだろう。あなたがそれについて考えるとき、スイカのように。