Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Таблица + поля для ввода / 11 сообщений из 11, страница 1 из 1
02.12.2013, 19:56
    #38486555
kim-kong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
Нужно сделать таблицу с полями для ввода. Таблица должна обновляться по нажатию кнопки submit. Как сделать вью и контроллер, обязательно ли использовать ajax ?
...
Рейтинг: 0 / 0
03.12.2013, 12:43
    #38487220
Zoria
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
kim-kong,

для начала открыть вижуалстудию.
аякс использовать необязательно.
...
Рейтинг: 0 / 0
03.12.2013, 12:46
    #38487226
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
kim-kong,

таблица делается с помощью <table>

поля делаются с помощью <input>

контроллер делается с помощью public class MyController: Controller

ajax обязательно применяется, если надо выполнить запрос без обновления страницы.

что ещё вас интересует?
...
Рейтинг: 0 / 0
04.12.2013, 02:47
    #38488266
kim-kong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
hVostt,

Забыл прицепить код
Я хочу, чтобы grid (или list) и create были на одной странице. Для этого сделал новую модель:

Код: c#
1.
2.
3.
4.
5.
6.
    public class EnzoViewModel
    {
        public Product Product { get; set; }
        public IngList IngList { get; set; }
        public IEnumerable<Ingredient> Ingredient { get; set; } 
    }



Контроллер + вью

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
        public ActionResult IngList()
        {
            ViewBag.IngId = new SelectList(db.Ingredients, "Id", "Name");
            ViewBag.ProdId = new SelectList(db.Products, "Id", "Name");
            var viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join ing in db.Ingredients on il.IngId equals ing.Id
                 where (il.ProdId == p.Id) && (il.IngId == ing.Id)
                 select new IngListModel { ProdName = p.Name, IngName = ing.Name, Amount = il.Amount }).ToList();
            return View(viewModel);
        }

        [HttpPost]
        public ActionResult IngList(IngList inglist)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.IngLists.Add(inglist);
                    db.SaveChanges();
                    return RedirectToAction("IngList");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, ex);
            }
            return View(inglist);
        }



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
@model EnzoApp.Models.IngListModel

@{
    ViewBag.Title = "IngList";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>IngList</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Добавить новый заказ</legend>
        <br>
        <div class="editor-label">
            <b>Клиент</b>
        </div>
        <div class="editor-field">
            @Html.DropDownList("ProdId", (IEnumerable<SelectListItem>) ViewBag.ProdId, "--Выберите рецептуру--")
            @Html.ValidationMessageFor(model => model.ProdName)
        </div>

        <div class="editor-label">
            <b>Дата отгрузки</b>
        </div>
        <div class="editor-field">
            @Html.DropDownList("IngId", (IEnumerable<SelectListItem>) ViewBag.IngId, "--Выберите ингредиент--")
            @Html.ValidationMessageFor(model => model.IngName)
        </div>

        <div class="editor-label">
            <b>Артикул</b>
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Amount)
            @Html.ValidationMessageFor(model => model.Amount)
        </div>

        <p>
            <input type="submit" value="Добавить" />
        </p>
    </fieldset>
}

@{
    var grid = new WebGrid(
        Model,rowsPerPage:10,
        defaultSort:"ProdName",
        columnNames:new [] {"ProdName", "IngName", "Amount"}
        );
}

@grid.GetHtml(

fillEmptyRows:false,
mode:WebGridPagerModes.All,

columns:grid.Columns
(
grid.Column("ProdName", header:"Наименование", format: @<text>@Html.ActionLink((string)item.Name, "IngredientDetails", new { id = item.Id }, new { @class = "btn btn-success" })</text>),
grid.Column("IngName", header:"Ингредиент"),
grid.Column("Amount", header:"Кг")
)
)


<div>
    @Html.ActionLink("Назад", "Orders")
</div>



Ошибки:

Наиболее подходящий перегруженный метод для "System.Web.Helpers.WebGrid.WebGrid(System.Collections.Generic.IEnumerable<dynamic>, System.Collections.Generic.IEnumerable<string>, string, int, bool, bool, string, string, string, string, string, string, string)" имеет несколько недопустимых аргументов

Ошибка 2 Аргумент "1": преобразование типа из "EnzoApp.Models.IngListModel" в "System.Collections.Generic.IEnumerable<dynamic>" невозможно
...
Рейтинг: 0 / 0
04.12.2013, 10:17
    #38488415
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
что-то я не вижу класса EnzoApp.Models.IngListModel
может он действительно не является IEnumerable
...
Рейтинг: 0 / 0
04.12.2013, 16:18
    #38489138
kim-kong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
Паганель,

Код: c#
1.
2.
3.
4.
5.
6.
    public class IngListModel
    {
        public string ProdName { get; set; }
        public string IngName { get; set; }
        public int Amount { get; set; }
    }



Почему он должен быть Ienumerable ?
...
Рейтинг: 0 / 0
04.12.2013, 16:24
    #38489149
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
...
Рейтинг: 0 / 0
04.12.2013, 16:44
    #38489190
kim-kong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
Паганель,

До этого делал вот так и все работает

Код: c#
1.
2.
3.
4.
5.
6.
7.
    class ModelList
    {
        public int Id { get; set; }
        public string ClientName { get; set; }
        public string ShipDate { get; set; }
        public string Article { get; set; }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        public ActionResult Orders()
        {
            var viewModel =
                (from pd in db.Orders
                 join p in db.Clients on pd.ClientId equals p.Id
                 where pd.ClientId == p.Id
                 select new ModelList { Id = pd.Id, ClientName = p.Name, ShipDate = pd.ShipDate, Article = pd.Article }).ToList();
            return View(viewModel);
        }



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@{
    var grid = new WebGrid(
        Model,rowsPerPage:10,
        defaultSort:"ClientName",
        columnNames:new [] {"ClientName", "ShipDate", "Article"}
        );
}

@grid.GetHtml(

fillEmptyRows:false,
mode:WebGridPagerModes.All,

columns:grid.Columns
(
grid.Column("ClientName", header:"Клиент", format: @<text>@Html.ActionLink((string)item.ClientName, "OrderDetails", new { id = item.Id }, new { @class = "btn btn-success" })</text>),
grid.Column("ShipDate", header:"Дата"),
grid.Column("Article", header:"Артикул")
)
)
...
Рейтинг: 0 / 0
04.12.2013, 17:11
    #38489240
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
потому что ToList()
...
Рейтинг: 0 / 0
04.12.2013, 17:40
    #38489304
kim-kong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
Паганель,

И в том и в другом случае в IngListModel и ModelList .ToList()
...
Рейтинг: 0 / 0
04.12.2013, 17:51
    #38489330
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица + поля для ввода
поставьте точку останова и посмотрите что Вы передаете во View в первом и втором случае
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Таблица + поля для ввода / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]