NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Adam Gajdečka:29.7.2017 9:24

Ahoj, prosím o radu. Dělal jsem stránkování a fungovalo to, ale když jsem musel měnit pár věcí a přidat ViewModel, tak to již nefunguje.

Já vidím ten problém, ale nevidím řešení. Problém je to, že toto se bere jako 1 položka:

new CampaignCategoryViewModel
                {
                    campaignList = GetCampaignsModel(searchString),
                    category = GetCategoryModel()
                }

Prosím o radu, díky

// GET: Campaigns
       public ActionResult Index(string name, string sortOrder, string currentFilter, string searchString, int? page)
       {

           var CCVM = new[]
           {
               new CampaignCategoryViewModel
               {
                   campaignList = GetCampaignsModel(searchString),
                   category = GetCategoryModel()
               }

           };



           ViewBag.CurrentSort = sortOrder;
           ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
           ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";

           if (searchString != null)
           {
               page = 1;
           }
           else
           {
               searchString = currentFilter;
           }

           ViewBag.CurrentFilter = searchString;



           int pageSize = 1;
           int pageNumber = (page ?? 1);



           return View(CCVM.ToPagedList(pageNumber, pageSize));
       }
 
Odpovědět
29.7.2017 9:24
Avatar
Adam Gajdečka:29.7.2017 9:31

Momentálně to nedělá stránkování a vypíše se vše na 1 stránku

 
Nahoru Odpovědět
29.7.2017 9:31
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:29.7.2017 17:41

proc je to ccvm pole? navic s jednim prvkem? Ukaz ten viewmodel

Nahoru Odpovědět
29.7.2017 17:41
No hope, no future, JUST WAR!
Avatar
Adam Gajdečka:29.7.2017 22:46
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Affiliate_Katalog.Models;

namespace Affiliate_Katalog.ViewModel
{
    public class CampaignCategoryViewModel
    {
        public Campaign campaign { get; set; }
        public List<Campaign> campaignList { get; set; }
        public List<Category> category { get; set; }
        public List<AffiliateType> affiliateTypes { get; set; }

        public Company company { get; set; }
        public List<Company> companyList { get; set; }
    }
}
Editováno 29.7.2017 22:47
 
Nahoru Odpovědět
29.7.2017 22:46
Avatar
Adam Gajdečka:29.7.2017 23:23

Zkoušel jsem i

// GET: Campaigns
    public ActionResult Index(string name, string sortOrder, string currentFilter, string searchString, int? page)
    {

        if (searchString != null)
        {
            page = 1;
        }
        else
        {
            searchString = currentFilter;
        }

        ViewBag.CurrentFilter = searchString;

        int pageSize = 10;
        int pageNumber = (page ?? 1);

        CampaignCategoryViewModel CCVM = new CampaignCategoryViewModel();
        CCVM.campaignList = GetCampaignsModel(searchString);
        CCVM.campaignList.ToPagedList(pageNumber, pageSize);
        CCVM.category = GetCategoryModel();


        ViewBag.CurrentSort = sortOrder;
        ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
        ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";


     return View(CCVM);
    }

Ale stejně mi to do View vrátí všechno

 
Nahoru Odpovědět
29.7.2017 23:23
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:30.7.2017 15:54

Proc to neudelas takhle?

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application
Nahoru Odpovědět
30.7.2017 15:54
No hope, no future, JUST WAR!
Avatar
Adam Gajdečka:30.7.2017 23:09

Není mi jasné, jak to mám udělat, vzhledem k tomu, že mám jinou situaci ViewModel než v tom odkazu co jsi mi poslal. Mohl by jsi mi prosím naznačit, jak to udělat? Děkuji

 
Nahoru Odpovědět
30.7.2017 23:09
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:31.7.2017 0:12

pouzivej odpovedet... kouknu na to zitra. Posli i to view, kde vypisujes ten VM

Editováno 31.7.2017 0:13
Nahoru Odpovědět
31.7.2017 0:12
No hope, no future, JUST WAR!
Avatar
Adam Gajdečka:31.7.2017 0:26
@*@model IEnumerable<Affiliate_Katalog.Models.Campaign>

    @model PagedList.IPagedList<Affiliate_Katalog.ViewModel.CampaignCategoryViewModel>

    *@
@model Affiliate_Katalog.ViewModel.CampaignCategoryViewModel
@using PagedList.Mvc;


<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />

@{
            ViewBag.Title = "Seznam kampaní";

    }

<h2>Affiliate kampaně </h2>



<a href="@Url.Action("Create", "Campaigns")"><button class="btn btn-primary">Přidat kampaň</button></a>


<div class="pull-right">

        @using (Html.BeginForm("Index", "Campaigns", FormMethod.Get))
        {


                    @Html.TextBox("SearchString", ViewBag.CurrentFilter as string, new { @Placeholder = "Hledej kampaně", @Class = "form-control-search" }) <input class="btn btn-default" type="submit" value="Hledat" />


        }
    </div>






    <table class="table">


        @foreach (var itemCl in Model.campaignList)
        {
            if (Model.campaignList.Count > 0)
            {
                <tr>
                    <th>
                        Název kampaně
                    </th>

                    <th>
                        Popis
                    </th>

                    <th>
                        Kategorie
                    </th>

                    <th></th>

                    <th></th>
                </tr>
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => itemCl.Name)
                    </td>


                    <td>


                        @if (itemCl.Description.Length > 60)
                        {
                            <html>

                            @System.Text.RegularExpressions.Regex.Replace(@itemCl.Description.Substring(0, 60), "<.*?>", string.Empty) [...]
                        </html>

                        }


                        else
                        {
                            <html>

                            @System.Text.RegularExpressions.Regex.Replace(@itemCl.Description, "<.*?>", string.Empty)


                        </html>
                        }



                    </td>


                    @*         @foreach (var itemCat in Model.category)
                        { <td>
                            if (ItemCam.CategoryId == itemCat.Id)
                            {
                                @itemCat.Name
                            }
                        }*@



                    <td>

                        <a target="_blank" href="@itemCl.UrlAffiliate"><button class="btn btn-primary">Registrovat se</button></a>

                    </td>

                    <td>
                        @*  @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
                              @Html.ActionLink("Details", "Details", new { id=item.Id }) |
                            @* @Html.ActionLink("Delete", "Delete", new { id=item.Id })*@

                        <a href='@Url.Action("Details", "Campaigns", new { id = itemCl.Id, Name = StringHelp.RemoveDiacriticsAndSpaces(itemCl.Name) })'><button class="btn btn-success">Zobrazit více</button> </a>
                    </td>
                </tr>

            }
        }
    </table>
    }
    else if (Model.campaignList.Count == 0)
    {
    <br /><br />
    <hr />
    <center>
        <h2>Nic nenalezeno</h2>
    </center>
    }


    <br />

    @*@if (Model.campaignList.PageCount > 1)
        {
            <h2>TESSF</h2>

                @Html.PagedListPager(Model.campaignList, page => Url.Action("Index",
            new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))


        }
    *@
    <br />
 
Nahoru Odpovědět
31.7.2017 0:26
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:31.7.2017 8:41

Co ty 3 modely tam? Nech tam ten, ktery posilas z kontroleru. Tedy ccvm.

Predpokladam, ze se tam bude zobrazovat nekolikrat obsah ccvm viemodelu, ze? Abych to spravne teda pochopil...

Nahoru Odpovědět
31.7.2017 8:41
No hope, no future, JUST WAR!
Avatar
Adam Gajdečka:31.7.2017 9:34

3 tam sice jsou, ale jsou zakomentované. Aktivní je jen @model Affiliate_Kata­log.ViewModel­.CampaignCate­goryViewModel

Bohužel tento portál neumí poznat komentář @*

Je potřeba vypsat list campaign a k tomu najít a vypsat název dané kategorie.

 
Nahoru Odpovědět
31.7.2017 9:34
Avatar
Adam Gajdečka:1.8.2017 19:41

Tak jsem to vyřešil. Podle https://stackoverflow.com/…list-asp-mvc

Změnit v modelView místo List je tam

public IPagedList<Campaign> campaignList { get; set; }

a

// GET: Campaigns
      public ActionResult Index(string name, string sortOrder, string currentFilter, string searchString, int? page)
      {

          if (searchString != null)
          {
              page = 1;
          }
          else
          {
              searchString = currentFilter;
          }

          ViewBag.CurrentFilter = searchString;

          int pageSize = 10;
          int pageNumber = (page ?? 1);


         var CCVM = new CampaignCommentViewModel();
          CCVM.categoryList = GetCategoryModel();

          var campaigns = GetCampaignsModel(searchString);
          CCVM.campaignList = campaigns.ToPagedList(pageNumber, pageSize);

          CCVM.campaignList.ToPagedList(pageNumber, pageSize);



          ViewBag.CurrentSort = sortOrder;
          ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
          ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";


       return View(CCVM);
      }
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
1.8.2017 19:41
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.