C # DataPager помогите! - PullRequest
       8

C # DataPager помогите!

0 голосов
/ 24 июня 2011

Я недавно построил представление списка, которое показывает количество продуктов, взятых из базы данных с использованием LINQ. Поскольку продуктов довольно много, я не хочу, чтобы они были перечислены на странице одновременно, так как это слишком утомительно для поиска. Вместо этого я хочу добавить paginaton.

Способ, который я использовал для этого, - создать DataPager и связать его с ListView. Моя проблема в том, что сайт больше не будет работать из-за ошибки. Msgstr "Нет перегрузки для 'LV_Pro_PagepropertiesChanging' соответствует делегату 'System.Event.Handler'". Я довольно озадачен этим, потому что мой код кажется правильным (мне все равно!).

Может кто-нибудь взглянуть на это и посмотреть, правильно ли я это настроил !!! ЕСЛИ кто-то может предложить альтернативный способ, это тоже было бы здорово.

Пейджер:

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

ListView:

<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();

                }
            }
        }
    }

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Вы привязываетесь к неправильному событию в разметке ListView.
Используйте событие OnPagePropertiesChanging вместо OnPagePropertiesChanged

Разметка

OnPagePropertiesChanging="LV_Pro_PagePropertiesChanging"
1 голос
/ 26 октября 2011

Девять плюс восемь? ну, это будет то, что не так. Как арбуз, когда вы думаете об этом.

...