Редактировать строку в таблице angularjs
Как я могу передать данные json в это представление и превратить представление в форму и обновить ее вместо формы создания?
Что я уже пробовал:
У меня есть следующая угловая таблица с кнопкой редактирования
<table class="tableData" border="0" cellspacing="0" cellpadding="0"> <thead> <tr> <th></th> <th>Budget Name</th> <th>Year</th> <th>Month</th> <th></th> </tr> </thead> <tbody ng-repeat="(ind,O) in budgetdetails"> <tr ng-class-even="'even'" ng-class-odd="'odd'"> <td class="CX"><span>+</span></td> <td>{{O.budget.BudgetName}}</td> <td>{{O.budget.Year}}</td> <td>{{O.budget.Month}}</td> <td><input type="button" value="Remove" class="btn btn-primary" data-ng-click='removeRow(O)' /> <input type="button" value="Edit" class="btn btn-primary" data-ng-click='EditRow(O)' /></td> </tr> <tr class="sub"> <td></td> <td colspan="5"> <table class="tableData" border="0" cellspacing="0" cellpadding="0"> <tr> <th>Category</th> <th>SubCategory</th> <th>Amount</th> </tr> <tr ng-repeat="(indx,a) in O.budgetdetails" ng-class-even="'even'" ng-class-odd="'odd'"> <td>{{a.Category}}</td> <td>{{a.Subcategory}}</td> <td>{{a.Amount| currency}}</td> </tr> @* <tr> <td colspan="2">Total</td> <td></td> <td>{{Totals().Amount| currency}}</td> </tr>*@ </table> </td> </tr> </tbody> </table>
Я хочу иметь возможность редактировать данные, когда я нажимаю на кнопку редактирования до сих пор я играл с угловым контроллером, и у меня есть это
$scope.EditRow = function (item) { $scope.budget = item.budget; $scope.idBudget = item.budget.idBudget; $scope.BudgetName = item.budget.BudgetName; $scope.Year = item.budget.Year; $scope.Month = item.budget.Month; resp=BDetail.FindBudgetById(item.budget.idBudget); };
Последняя строка вызывает json и возвращает набор данных, которые я хочу отправить на страницу, где я создаю бюджеты для редактирования. Теперь я не уверен, как отправить json на другую страницу, и страница, которая его получает, - это представление, если бы я создавал бюджеты, и у него есть редактор IEnumerable для повторения деталей бюджетов. Код выглядит следующим образом
@model BudgetPortalMVC4.Models.budget @{ ViewBag.Title = "NewBudget"; Layout = "~/Views/Shared/_Layout.cshtml"; } @Scripts.Render("~/bundles/jquery") <script src="../../Scripts/jquery.validate.js" type="text/javascript"> </script> <script src="~/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> <h2>NewBudget</h2>
@using (Html.BeginForm()) { @Html.ValidationSummary(true) <div> <table> <tr> <td> <div class="editor-label"> @Html.LabelFor(model => model.BudgetName) </div> <div class="editor-field"> @Html.EditorFor(model => model.BudgetName) @Html.ValidationMessageFor(model => model.BudgetName) </div> </td> <td> <div class="editor-label"> @Html.LabelFor(model => model.Year) </div> <div> @Html.DropDownListFor(model => model.Year, BudgetPortalMVC4.Controllers.BudgetController.GetDropDownListForYears()) @Html.ValidationMessageFor(model => model.Year) </div> </td> <td> <div class="editor-label"> @Html.LabelFor(model => model.Month) </div> <div> @Html.DropDownListFor(model => model.Month, BudgetPortalMVC4.Controllers.BudgetController.GetDropDownListForMonth()) @Html.ValidationMessageFor(model => model.Month) </div> </td> </tr> </table> </div> <div> <h3>Budget Detail</h3> <div> <input type="button" id="addbudgetdetail" value="Add row" /></div> <div id="new-budgetdetail"> @Html.EditorForMany(x => x.budgetdetails) </div> <input type="submit" /> </div> @section Scripts{ <script type="text/jscript"> var url = '@Url.Action("GetSubCategories", "Budget")'; // Do not hard code your url's $(document).on('change', '.SelectedCategory', function () { var subCategory = $(this).closest('.item').find('.SelectedSubCategory'); subCategory.empty(); $.getJSON(url, { id: $(this).val() }, function (data) { if (!data) { return; } subCategory.append($('<option></option>').val('').text('Please select')); // Do not give the option a value! $.each(data, function (index, item) { subCategory.append($('<option></option>').val(item.Value).text(item.Text)); }); }); }); $(function () { $('#addbudgetdetail').on('click', function () { jQuery.get('@Url.Action("AddBudgetDetail", "Budget")').done(function (html) { $('#new-budgetdetail').append(html); $('form').data('validator', null); $.validator.unobtrusive.parse($('form')); }); }); $(".deleteRow").on("click", '', function () { $(this).parents("#budgetRow:first").remove(); return false; }); }); </script> } }