У меня есть таблица, которая заполнена данными JSON. В последнем столбце вы можете открыть модал, соответствующий каждой строке, и вы можете добавить комментарий в поле ввода - это обновит этот модал. Другими словами, строки таблицы, у которых нет комментариев, имеют пустой модал, и строки с хотя бы одним комментарием должны появляться в модале, которому они соответствуют.
В моем бэкэнд-менеджере (SQL Server Management Studio) я вижучто там показываются комментарии, но они не появляются в модальностях.
Я не могу сказать, происходит ли проблема со стороны JavaScript (представление) или из модели, или из другого места.
Добавление DocBudgetId является относительно новым. До этого данные рецензирования / комментариев были привязаны к номеру документа, а информация появлялась в модальностях. Я подозреваю, что мне нужно изменить / изменить DocBudgetId, но я не уверен, как это сделать.
Модальный снимок экрана: https://i.stack.imgur.com/Vqd4o.png На дисплее появляется DocNumber
верхний левый. Были сделаны комментарии к строке, к которой принадлежит этот модал, но они не отображаются в модальной таблице.
Модель:
public class ReviewRow
{
public Guid DocBudgetId { get; set; }
public string DocNumber { get; set; }
public string ReviewBy { get; set; }
public string ReviewOn { get; set; }
public string ReviewComment { get; set; }
}
Вид:
<div class="modal-body">
<div id="review"></div>
<table>
<tr>
<td>
@Html.LabelFor(x => Model.ReviewComment)<br />
@Html.TextAreaFor(x => x.ReviewComment, new { style = "width: 200px; " })<br />
@Html.HiddenFor(x => x.DocUnderReview, new { id = "txtDocUnderReview" })
<input type="submit" value="@BB360.Models.BudgetReportingViewModel.Buttons.Review" name="@Html.NameFor(x => x.SubmitButton)" id="SubmitButton" class="btn btn-secondary" />
</td>
</tr>
</table>
// --- other code --- //
function ShowReviewModal(DocBudgetId, DocNumber) {
$("#txtDocUnderReview").val(DocNumber);
console.log(DocNumber)
$.ajax({
type: "POST",
url: "/Doc/GetDocUnderReviewDetails",
data: "docNumber=" + DocNumber + "&docBudgetId=" + DocBudgetId,
timeout: 5000,
success: function(data) {
console.log(data); // ------------- empty array
// write out the modal table
var tBody = $("#tblExpenseDeductionDetails tbody");
tBody.empty();
s = "";
for (x = 0; x < data.length; x++) {
let ReviewBy = data[x].ReviewBy,
ReviewOn = data[x].ReviewOn,
ReviewComment = data[x].ReviewComment;
s = s + "<tr>";
s = s + "<td>" + ReviewBy + "</td>";
s = s + "<td>" + ReviewOn + "</td>";
s = s + "<td title='" + ReviewComment.replace(/'/g, '') + "' style='max-width:550px;word-wrap: break-word;'>" + stringTruncate(ReviewComment, 65) + "</td>";
s = s + "</tr>";
}
$("#modalDocName").text(DocNumber);
tBody[0].innerHTML = s;
$("#ReviewModal").modal();
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
$("#ReviewModal").modal();
}
Контроллер
public ActionResult BudgetReporting(BudgetReportingViewModel model)
{
Common.GetDbExecutor().QueryNonQuery(Sql.InsertDocUnderReview, new {
model.DocBudgetId,
DocNumber = model.DocUnderReview, // D is uppercase
ReviewBy = Common.GetUserName(),
ReviewComment = model.ReviewComment,
}, 30).ToString();
PopulateBudgetReportingDetail(model);
return View(model);
}
public ActionResult GetDocUnderReviewDetails(Guid docBudgetId) // camelCase //
{
var data = Common.GetKKDbExecutor().Query<BudgetReportingViewModel.ReviewRow>(Sql.GetDocUnderReviewDetails, new {
docBudgetId
}).ToList();
return Json(data);
}
Файл Sql
namespace BB360
{
public partial class Sql
{
public const string GetDocUnderReviewDetails = @"
select
DocBudgetId,
DocNumber,
ReviewBy,
convert(varchar, ReviewOn, 101) as ReviewOn,
isnull(ReviewComment, '') as ReviewComment
from DocBudgetReview
where DocBudgetId = @DocBudgetId
order by ReviewOn desc
";
}
}