2011-06-24 128 views
-1

我最近建立了一個列表視圖,顯示了使用LINQ從數據庫中獲取的多個產品。由於產品數量衆多,我不希望它們全部在頁面上同時列出,因爲這會使搜索過於繁瑣。相反,我想添加paginaton。C#DataPager幫助!

我這樣做的方式是創建一個DataPager並將其鏈接到Listview。我的問題是由於錯誤,網站不會再執行。 「'LV_Pro_PagepropertiesChanging'的重載沒有匹配委託'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綁定代碼,如果它仍然不能正常工作。請確保你在page_load裏綁定了listview!ispostback事件 – naveen

+0

我已經發布了代碼,歡呼聲 – Callum

1

九加八?以及它將是那不是它。就像你想到西瓜時一樣。