My Main View имеет несколько выпадающих списков и радиокнопок.При изменении радиопереключения частичное представление обновляется внутри div id = "partalView »с помощью вызова ajax.
Мой вид имеет вид:
<div class="row text-align-left" style="background-color: #fffbf2;">
<form>
<fieldset>
<div class="col-md-2 col-sm-2 col-xs-2 " id="divEngineer">
<label>Engineer<span class="error">*</span></label>
@Html.DropDownList("CODE", (IEnumerable<SelectListItem>)ViewData["EnggList"], "--Select--", new { @placeholder = "--Select--", @class = "form-control", @id = "ddlEngineer" })
</div>
<div class="col-md-2 col-sm-2 col-xs-2 " id="divNature">
<label>Call Nature<span class="error">*</span></label>
@Html.DropDownList("CALLNATUREID", (IEnumerable<SelectListItem>)ViewData["CallNatureList"], "--Select--", new { @placeholder = "--Select--", @class = "form-control", @id = "ddlCallNature" })
</div>
<div class="col-md-2 col-sm-2 col-xs-2 " id="divSDM">
<label>SDM<span class="error">*</span></label>
@Html.DropDownList("Code", (IEnumerable<SelectListItem>)ViewData["SDMList"], new { @placeholder = "--Select--", @class = "form-control", @id = "ddlSDM" })
</div>
<div class="radio-inline col-md-1 col-sm-1 col-xs-1 ">
<label><input type="radio" id="r1" name="rdbSDMDesk" value="reviewResp" checked>Review of Response</label>
</div>
<div class="radio-inline col-md-1 col-sm-1 col-xs-1 ">
<label><input type="radio" id="r2" name="rdbSDMDesk" value="schCalls">Schedule Calls</label>
</div>
<div class="radio-inline col-md-2 col-sm-2 col-xs-2 ">
<label><input type="radio" id="r3" name="rdbSDMDesk" value="reschCalls">Re-schedule Calls (Clear from BD)</label>
</div>
<div class="radio-inline col-md-1 col-sm-1 col-xs-1 ">
<label><input type="radio" id="r4" name="rdbSDMDesk" value="expAppr">Expense Approval</label>
</div>
<div class="radio-inline col-md-1 col-sm-1 col-xs-1 ">
<label><input type="radio" id="r5" name="rdbSDMDesk" value="pmReview">PM Review</label>
</div>
</fieldset>
</form>
</div>
<div id="partialView"></div>
код JavaScriptв моем главном виде:
//When Radio selection changes
$("#r1, #r2, #r3, #r4, #r5").change(function () {
if ($("input[name='rdbSDMDesk']").is(':checked')) {
$("#overlay").show();
var rdbval = $("input[name='rdbSDMDesk']:checked").val();
var CallNature = $('#ddlCallNature').val();
var SDMCode = $('#ddlSDM').val();
var FECode = $('#ddlEngineer').val();
if (SDMCode == "0")
{
SDMCode = "admin";
}
if (rdbval == "reviewResp" || rdbval == "schCalls" || rdbval == "reschCalls")
{
$("#divNature").show();
$("#divSDM").show();
$("#divEngineer").hide();
}
else
{
$("#divEngineer").show();
$("#divSDM").show();
$("#divNature").hide();
}
$.ajax({
url: '@Url.Action("GetSDMDeskDetail", "BankingService")',
contentType: 'application/html; charset=utf-8',
type: 'GET',
dataType: 'html',
data: { rdbval: rdbval, SDMCode: SDMCode, CallNature: CallNature, FECode: FECode },
})
.success(function (result) {
$('#partialView').html(result);
$("#viewErrorFillSDMDetail").hide();
$("#overlay").hide();
})
.error(function (xhr, status) {
$("#viewErrorFillSDMDetail").show();
alert(xhr.responseText);
$("#overlay").hide();
});
}
});
Теперь это достигнет контроллера, который возвращает частичное представление.
Код контроллера:
private ActionResult ExpenseApprCallsResults(string FECode, string SDMCode, string rdbValue)
{
ATMCRMProcedureDetails modelSP = new ATMCRMProcedureDetails();
string UserName = "admin";
modelSP.GetExpApprTickets = dbOraContext.GETCONVTICKETSFORAPPROVE(SDMCode, FECode).ToList();
modelSP.rdbValue = rdbValue;
modelSP.selectedFeCode = FECode;
modelSP.selectedSDMCode = SDMCode;
return PartialView("SDMDeskExpApproval", modelSP);
}
Здесь частичный вид отлично загружен необходимыми деталями.Теперь в своем частичном представлении я пытаюсь обновить каждую строку, которая заполняется, нажимая Утвердить / Отклонить.(как показано на рис. ниже)
JavaScript в частичном представлении
function clickAppDisApp(TICKET, VISITTYPE, SITEVISITID, TYPE) {
var ApprovedKM = $('#kmAppr').val();
var rdbValue = $('#hidRdbValue').val();
var selectedFE = $('#hidSelFE').val();
var selectedSDM = $('#hidSelSDM').val();
$.ajax({
cache: false,
url: '@Url.Action("UpdateSDMExpenseApproval", "BankingService")',
dataType: "json",
type: "GET",
data: { "CALLTICKETNUMBER": TICKET, "VISITTYPE": VISITTYPE, "SITEVISITID": SITEVISITID, "TYPE": TYPE, "APPRKM": ApprovedKM, "rdbValue": rdbValue, "selectedFE": selectedFE, "selectedSDM": selectedSDM },
success: function (result) {
isSuccess = result;
$("#overlay").hide();
},
error: function (result) {
alert('An error occured while taking the action')
isSuccess = result;
}
}).done(function () {
alert(isSuccess);
$("#overlay").hide();
})
}
И, наконец, код контроллера для JS
[HttpGet]
public ActionResult UpdateSDMExpenseApproval(long CALLTICKETNUMBER, string VISITTYPE, decimal SITEVISITID, string TYPE, decimal APPRKM, string rdbValue, string selectedFE, string selectedSDM)
{
// Necessary Code Here
return Json(result, JsonRequestBehavior.AllowGet);
}
Проблема: При нажатии на гиперссылку достигает вышеуказанный код контроллера и обновляются значения в базе данных.Но он также должен перезагрузить то же частичное представление с обновленными данными (обновленное значение будет удалено из списка) при успешном выполнении ajax.Поскольку частичное представление вызывается в главном представлении, а обновление для значения / строки выполняется в частичном представлении с помощью вызова ajax, как я могу вернуть обновленные данные в частичном представлении в возвращении успеха ajax.
Должен ли я вернуться к главному виду, поскольку он содержит div , который содержит частичное представление?Или частичное представление может быть каким-то образом перезагружено с данными, которые я получил от контроллера действий ExpenseApprCallsResults .
Спасибо!