Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC3 - Как обновить несколько полей в гриде? / 25 сообщений из 37, страница 1 из 2
15.05.2012, 12:01
    #37794589
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Всем добрый день!

Подскажите, пожалуйста, такую вещь:
у меня есть список заказов, у каждого заказа есть статус. Статус выбирается из выпадающего списка.
Внизу таблицы - кнопка для сабмита этих изменений в базу.

Как обновить в базе заказы, по которым изменился статус (или какое-нибудь другое поле)?

P.S. Модель сделана на linq2sql - список заказов получается хранимой процедурой.
Ниже скриншот.
...
Рейтинг: 0 / 0
15.05.2012, 12:09
    #37794625
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,

1 вариант через аякс менять непосредственно измененную запись
2 вариант через post вернут контроллеру данные
...
Рейтинг: 0 / 0
15.05.2012, 12:16
    #37794647
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
DezaGlass,

1 вариант через аякс менять непосредственно измененную запись
2 вариант через post вернут контроллеру данные

Я хочу вернуть данные контроллеру, только как это сделать?
...
Рейтинг: 0 / 0
15.05.2012, 12:17
    #37794650
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Как это сделать по всем записям сразу?
И как в контроллере понять, какие из них изменились?
...
Рейтинг: 0 / 0
15.05.2012, 12:36
    #37794719
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,

Покажи код твоей View
...
Рейтинг: 0 / 0
15.05.2012, 12:37
    #37794725
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
GlassDezaGlass,

1 вариант через аякс менять непосредственно измененную запись
2 вариант через post вернут контроллеру данные

Я хочу вернуть данные контроллеру, только как это сделать?

Я MVC совсем немного знаю, но тем не менее:

[HttpPost]
public ActionResult Save(List<Orders> orders)
{
...
}

+ еще пример:


27. Последоватльные индексы
[HttpPost]
public ActionResult Save(List<Orders> orders)

@Html.TextBox(“[0].Name”)
@Html.TextBox(“[0].Price”)

@Html.TextBox(“[1].Name”)
@Html.TextBox(“[1].Price”)


И вообще почитай про последовательные индексы, IModelBinder, IValueProvider
...
Рейтинг: 0 / 0
15.05.2012, 12:37
    #37794729
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
DezaGlass,

Покажи код твоей View

@model IEnumerable<WebSK.Models.Proc_ES_Order_ListResult>

@{
ViewBag.Title = "Index";
}

<div class="page-header">
<h1>Приемки на склад <small>Список открытых заказов на приемку</small></h1>
</div>
<form class="form-inline">
<table class="table table-striped table-bordered table-condensed">
<thead>
<th>Складской заказ</th>
<th>Кл.Док.Но.</th>
<th>Дата</th>
<th>Проект</th>
<th>Склад</th>
<th>Статус</th>
<th>Штук</th>
<th>Перевозчик</th>
<th>№ накладной</th>
<th>Вес</th>
<th>Объем</th>
<th>Мест</th>


</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td><a href="../OrderDetail?id=@item.ID">@Html.DisplayFor(modelItem => item.WO)</a></td>
<td>@Html.DisplayFor(modelItem => item.CustDocNo)</td>
<td>@Html.DisplayFor(modelItem => item.Date)</td>
<td>@Html.DisplayFor(modelItem => item.Project)</td>
<td>@Html.DisplayFor(modelItem => item.Location)</td>
<td>

<select id="status-@item.ID">
<option value="@item.Status">@item.Status</option>
@foreach (var s in item.AvailableStatus.Split(';'))
{
<option value="@s">@s</option>

}
</select>

</td>
<td>@Html.DisplayFor(modelItem => item.Qty)</td>
<td>@Html.DisplayFor(modelItem => item.Agent)</td>
<td>@Html.DisplayFor(modelItem => item.Waybill)</td>
<td>@Html.DisplayFor(modelItem => item.Weight)</td>
<td>@Html.DisplayFor(modelItem => item.Cubage)</td>
<td>@Html.DisplayFor(modelItem => item.Pcs)</td>
</tr>
}
</tbody>
</table>

<button type="submit" class="btn btn-primary">Записать новые статусы</button>
...
Рейтинг: 0 / 0
15.05.2012, 12:47
    #37794773
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,
1. Есть кнопка SRC, код обязательно заключай в теги

таблицу вместе с кнопкой поместить сюда
Код: c#
1.
2.
3.
@using (Html.BeginForm()) {

}



создать экшен

[HttpPost]
Код: c#
1.
2.
3.
4.
public ActionResult<Имя твоей вьюхи>(List<WebSK.Models.Proc_ES_Order_ListResult> model)
{
...
}
...
Рейтинг: 0 / 0
15.05.2012, 12:48
    #37794776
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult<Имя твоей вьюхи>(List<WebSK.Models.Proc_ES_Order_ListResult> model)
{
...
}
...
Рейтинг: 0 / 0
15.05.2012, 13:00
    #37794845
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Deza
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult<Имя твоей вьюхи>(List<WebSK.Models.Proc_ES_Order_ListResult> model)
{
...
}



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        [HttpPost]
        public ActionResult Index(List<Proc_ES_Order_ListResult> model)
        {
            foreach (var item in model)
            {
                ...
            }

            return RedirectToAction("Index");
        }



Сделал вот так, но ругается на NULL в model, т.е. возвращается пустышка?
...
Рейтинг: 0 / 0
15.05.2012, 13:05
    #37794867
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Html.DisplayFor - потому что

тебе надо добавить
@Html.HiddenFor(x => x.Field) для каждого поля в форму
...
Рейтинг: 0 / 0
15.05.2012, 13:10
    #37794883
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Konst_OneHtml.DisplayFor - потому что

тебе надо добавить
@Html.HiddenFor(x => x.Field) для каждого поля в форму
ппц, изврат же! проще (или даже правильнее) - сделать мини-модель на прием, я просто не вижу смысла передавать лишние данные
...
Рейтинг: 0 / 0
15.05.2012, 13:11
    #37794888
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Konst_OneHtml.DisplayFor - потому что

тебе надо добавить
@Html.HiddenFor(x => x.Field) для каждого поля в форму

Т.е. надо прописать все поля как хидден, а те, что надо показать как Display?

А может быть дело в том, что у меня грид?
...
Рейтинг: 0 / 0
15.05.2012, 13:14
    #37794901
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Konst_OneHtml.DisplayFor - потому что

тебе надо добавить
@Html.HiddenFor(x => x.Field) для каждого поля в форму

не помогло, хотя и прописал.
...
Рейтинг: 0 / 0
15.05.2012, 13:16
    #37794906
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,

Прежде всего начни от сюда!
http://www.techdays.ru/videos/ASP.NET
Тренинг ASP.NET MVC 3 - Модуль 1. Знакомство с MVC 3
и так все тренинги и все вопросы отпадут
...
Рейтинг: 0 / 0
15.05.2012, 13:17
    #37794911
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
DezaGlass,

Прежде всего начни от сюда!
http://www.techdays.ru/videos/ASP.NET
Тренинг ASP.NET MVC 3 - Модуль 1. Знакомство с MVC 3
и так все тренинги и все вопросы отпадут

Уверен, что отпададут, и обязательно посмотрю.

А по существу вопроса - есть еще какие-нибудь идеи?
...
Рейтинг: 0 / 0
15.05.2012, 13:18
    #37794914
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,

смотри тренинги, потрать время, но научишься больше чем, тут тебе дадут сразу готовое решение, в котором ты не будешь понимать что как работает!
...
Рейтинг: 0 / 0
15.05.2012, 13:23
    #37794932
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
DezaGlass,

смотри тренинги, потрать время, но научишься больше чем, тут тебе дадут сразу готовое решение, в котором ты не будешь понимать что как работает!

Т.е. ты видишь, где у меня ошибка?
...
Рейтинг: 0 / 0
15.05.2012, 13:27
    #37794943
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,

ошибка у тебя, в не понимании как происходит обмен между контролером и вьюхой,
вариантов в теме написали кучу, но пока ты не понимаешь что они значат...
...
Рейтинг: 0 / 0
15.05.2012, 15:48
    #37795413
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
DezaGlass,

ошибка у тебя, в не понимании как происходит обмен между контролером и вьюхой,
вариантов в теме написали кучу, но пока ты не понимаешь что они значат...

Большое человеческое спасибо
...
Рейтинг: 0 / 0
15.05.2012, 16:21
    #37795517
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
И все-таки, может кто-нибудь кроме Deza подскажет, почему в пост-методе model = null?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        [HttpPost]
        public ActionResult Index(List<Proc_ES_Order_ListResult> model)
        {
            
            foreach (var item in model)
            {
                logger.Debug("new item" + item.WO);
            }
            
            return RedirectToAction("Index");
        }
...
Рейтинг: 0 / 0
15.05.2012, 16:59
    #37795630
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
GlassИ все-таки, может кто-нибудь кроме Deza подскажет, почему в пост-методе model = null?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        [HttpPost]
        public ActionResult Index(List<Proc_ES_Order_ListResult> model)
        {
            
            foreach (var item in model)
            {
                logger.Debug("new item" + item.WO);
            }
            
            return RedirectToAction("Index");
        }


внимательно почитай 12555690
...
Рейтинг: 0 / 0
15.05.2012, 17:08
    #37795658
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
SanSYSGlassИ все-таки, может кто-нибудь кроме Deza подскажет, почему в пост-методе model = null?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        [HttpPost]
        public ActionResult Index(List<Proc_ES_Order_ListResult> model)
        {
            
            foreach (var item in model)
            {
                logger.Debug("new item" + item.WO);
            }
            
            return RedirectToAction("Index");
        }


внимательно почитай 12555690

Сделал точно такой же метод, как ты написал,

Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult Save(List<Orders> orders)
{
...
}



вот orders в нем приходит null
...
Рейтинг: 0 / 0
15.05.2012, 17:42
    #37795736
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
Glass,

1. форма передает данные не по id элемента, а по name
2. попробуй так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<select id="status-@item.ID" name='status'>
<option value="@item.Status">@item.Status</option>
@foreach (var s in item.AvailableStatus.Split(';'))
{
<option value="@s">@s</option>
}
</select> 



Код: c#
1.
2.
[HttpPost]
public ActionResult Save(List<string> states)



под дебагом проверь - что пришло
потом почитай про то что я тебе говорил и заюзай Dictionary<int, string>
...
Рейтинг: 0 / 0
15.05.2012, 17:45
    #37795744
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC3 - Как обновить несколько полей в гриде?
SanSYSGlass,

1. форма передает данные не по id элемента, а по name
2. попробуй так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<select id="status-@item.ID" name='status'>
<option value="@item.Status">@item.Status</option>
@foreach (var s in item.AvailableStatus.Split(';'))
{
<option value="@s">@s</option>
}
</select> 



Код: c#
1.
2.
[HttpPost]
public ActionResult Save(List<string> states)



под дебагом проверь - что пришло
потом почитай про то что я тебе говорил и заюзай Dictionary<int, string>


То есть, view не вернет мне назад мой list с заказами, верно?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC3 - Как обновить несколько полей в гриде? / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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