Я использовал Tuple для загрузки двух моделей на мой взгляд.один div - добавить новые данные с помощью кнопки отправки.другой div - это сетка со списком всех данных.
Теперь появилась функция редактирования.если я нажму на правку в сетке, в первом элементе отобразятся соответствующие данные, но во втором элементе, имеющем сетку, обновления не произойдет.
Просмотр
@model Tuple<CashBoxUI.Models.DocumentModel, IEnumerable<CashBoxUI.Models.DocumentModel.DocumentDetailsModel>>
<div id="documenttype" class="panel-collapse collapse collapse">
<div class="panel-body row no-margin padding-top-bottom-10">
Тип документа: @ Html.DropDownListFor (model => model.Item1.DocumentTypeCode, Model.Item1.DocTypes, "Выбрать тип документа", новый {@class = "form-control", id = "ddlDocTypes", @onchange = "FillRefType () "})
</div>
<div class="col-lg-2 no-padding" style="margin-top:0.5%">
@Html.ValidationMessageFor(x => x.Item1.DocumentTypeCode, "", new { @class = "text-danger", id = "ddlDocTypesError" })
</div>
<div class="col-lg-1" style="float:right">
<button type="button" style="margin-left:10%" class="button-large button-blue" data-toggle="collapse" id="btnDocType" data-target="#documentmetadata">NEXT</button>
</div>
<div id="OPTY" class="row">
<div class="col-lg-3 divtblrow"> Opportunity ID</div>
<div class="col-lg-5 divtblrow" style="padding:0px !important">
@Html.DropDownListFor(model => model.Item1.OpportunityCode, Model.Item1.Opportunity, "Select Reference Name", new { @class = "form-control", style = "border: 1px solid darkgrey;padding-left: 5px;", id = "ddlOpportunity", @onchange = "FillDocName()", @disabled = "disabled" })
</div>
<div>
@Html.ValidationMessageFor(x => x.Item1.OpportunityCode, "", new { @class = "text-danger", id = "ddlOpportunityError" })
</div>
</div>
<div class="col-lg-1" style="float:right">
<input type="submit" style="margin-left:10%" class="button-large button-blue" id="btnUpload" value="SAVE" />
</div>
</div>
</div>
<div id="documentlist" class="panel-collapse collapse collapse">
<div class="col-lg-12 margin-top-10" style="margin-left:1%">
<input class="button-large button-blue" id="missing-rate" type="button" value="Missing Rates" />
</div>
<div class="panel-body row no-margin padding-top-bottom-10">
<div class="col-lg-12 margin-top-10">
<div class="col-lg-12 no-padding table no-margin" id="document-list">
@Html.Grid(Model.Item2).Columns(columns =>
{
//columns.Add().Titled("").Encoded(false).Sanitized(false).SetWidth(30).RenderValueAs(c => Html.RadioButton("selecteddocumentId", false, new { name = "selecteddocumentId", @class = "center-text", value = c.DocumentGUID, onClick = "UpdateProcess('" + c.DocumentGUID + "');" }));
columns.Add().Titled("").Encoded(false).Sanitized(false).RenderValueAs(model => "<a title='Tasks' class='center-text' href=\"javascript:void(0);\" onclick=\"return ShowTasks('" + model.DocumentGUID + "');\"><i class='fa fa-tasks' aria-hidden='true'></i></a>");
columns.Add().Titled("").Encoded(false).Sanitized(false).RenderValueAs(model => "<a class='center-text' href=\"javascript:void(0);\" onclick=\"return EditDocument('" + model.DocumentGUID + "');\"><i class='fa fa-pencil' aria-hidden='true'></i></a>");
columns.Add(c => c.FileName).Titled("Document Name").RenderValueAs(model => model.FileName).Filterable(true).Sortable(true).Encoded(false).Sanitized(false);
columns.Add(c => c.DocumentType).Titled("Document Type").Sortable(true).Filterable(true).Sanitized(false).Encoded(false);
columns.Add(c => c.ValidFrom).Titled("Valid From").Sortable(true).Format("{0:yyyy-MM-dd}").Filterable(true).Sanitized(false).Encoded(false);
columns.Add(c => c.ValidTo).Titled("Valid To").Sortable(true).Format("{0:yyyy-MM-dd}").Filterable(true).Sanitized(false).Encoded(false);
columns.Add(c => c.CreateTimestamp).Titled("Upload Date").Sortable(true).Format("{0:yyyy-MM-dd}").Filterable(true).Sanitized(false).Encoded(false);
columns.Add(c => c.CreateUserId).Titled("Uploaded By").Sortable(true).Filterable(true).Sanitized(false).Encoded(false);
}).WithPaging(15).EmptyText("No documents found")
</div>
</div>
</div>
</div>
JavaScript
function EditDocument(param) {
$.ajax({
type: "GET",
url: "/DocumentStorage/GetDocumentDetailsByGUID?DocumentID=" + param,
success: function (data) {
$('#documenttype').html(data);
},
error: function () {
$('#docStorageError').removeClass('hide');
$('.message #docStorage').text('');
$('.message #docStorage').text('Edit document - Data load failed');
//alert("editDocuments - Data Load Failed.");
return false;
}
});
Контроллер
public async Task<ActionResult> GetDocumentDetailsByGUID([string DocumentID)
{
string url = string.Empty;
var editdocModel = new DocumentModel();
editdocModel.GUID = docModel.GUID;
editdocModel.DocumentTypeCode = docModel.DocumentTypeCode;
editdocModel.CreateUserId = docModel.CreateUserId;
editdocModel.CreateTimestamp = docModel.CreateTimestamp;
editdocModel.Owner = docModel.Owner;
editdocModel.documentReferences = docModel.documentReferences;
return PartialView("UploadDocument", Tuple.Create<DocumentModel, IEnumerable<DocumentModel.DocumentDetailsModel>>(editdocModel, editdocModel.DocDetailsModel));
}
Я не уверен в части контроллера, как обновить только первый DIV с выбраннымданные из сетки.
Заранее спасибо !!