CRUD アプリケーションで jQuery の jTable プラグインを使用しています。私の問題は、更新アイコンをクリックすると、変更された値が jtable に表示されますが、データベース側では何も変更されていないようです。私はただ理解できません....この問題の原因は何ですか??? ここに私のビューのスクリプトがあります:
@ModelType jTableSampleDatabaseLayer.Hik.JTable.Models.Concour
@Code
ViewData("Title") = "Filtering"
End Code
@section CssImport
<style>
div.filtering {
border: 1px solid #999;
margin-bottom: 5px;
padding: 10px;
background-color: #EEE
}
</style>
end section
<div class="filtering">
<form>
<label>Numéro: <input type="text" name="numero" id="numero" />
<label> Type: @Html.DropDownList("numero_type", DirectCast(ViewBag.types, IEnumerable(Of SelectListItem)), New With { .id = "numero_type" })
Nature: @Html.DropDownList("numero_nature", DirectCast(ViewBag.natures, IEnumerable(Of SelectListItem)), New With { .id = "numero_nature" })</label></label>
<button type = "submit" id="LoadRecordsButton">Rechercher</button>
</form>
</div>
<div id="Tableau" ></div>
<script >
$(document).ready(function () {
//Initialize jTable
$('#Tableau').jtable({
title: 'Liste des concours',
actions: {
listAction: '@Url.Action("ConcoursListByFiter")',
deleteAction: '@Url.Action("DeleteConcours")',
updateAction: '/DefaultPage/UpdateConcours',
createAction: '@Url.Action("CreateConcours")'
},
fields: {
numero_concours: {
title: 'numéro',
width: '21%',
key: true,
create: true,
edit: false,
columnResizable: true,
columnSelectable: true
},
numero_type: {
title: 'type',
width: '12%',
options: '@Url.Action("GetTypeOptions")'
},
numero_nature: {
title: 'nature',
options: '@Url.Action("GetNatureOptions")',
width: '21%'
},
numero_etape: {
title: 'Etape',
options: { '1': 'En cours de programmation', '2': 'soumission', '3': 'validé', '4': 'sorti' },
width: '21%'
},
titre_concours: {
title: 'titre',
width: '21%'
},
date_de_sortie: {
title: 'date ',
width: '21%',
type: 'date',
displayFormat: 'yy-mm-dd',
inputClass: 'validate[required,custom[date]]'
},
nbre_rangs: {
title: 'Rang',
width: '21%'
},
nbre_matchs: {
title: 'Matchs',
width: '21%'
}
}
});
//Re-load records when user click 'load records' button.
$('#LoadRecordsButton').click(function (e) {
e.preventDefault();
$('#Tableau').jtable('load', {
numero: $('#numero').val(),
typeId: $('#numero_type').val(),
natureId: $('#numero_nature').val()
});
});
//Load all records when page is first shown
$('#LoadRecordsButton').click();
});
</script>
コントローラーからのスクリプト:
<HttpPost>
Public Function UpdateConcours(concours As Concour) As JsonResult
If (Not (ModelState.IsValid)) Then
Return Json(New With {Key .Result = "ERROR", Key .Message = "Form is not valid! Please correct it and try again."})
End If
Try
_repository.ConcoursRepository.UpdateConcours(concours)
Return Json(New With {Key .Result = "OK"})
Catch ex As Exception
Return Json(New With {Key .Result = "ERROR", Key .Message = ex.Message})
End Try
End Function
私の MemoryConcours Repositroy の UpdateConcours のスクリプト:
Public Sub UpdateConcours(concours As Concour) Implements IConcoursRepository.UpdateConcours
Dim foundConcours As Concour = _dataSource.Concours.FirstOrDefault(Function(s) s.numero_concours = concours.numero_concours)
If IsNothing(foundConcours) Then
Return
End If
foundConcours.numero_concours = concours.numero_concours
foundConcours.nbre_matchs = concours.nbre_matchs
foundConcours.nbre_rangs = concours.nbre_rangs
foundConcours.numero_etape = concours.numero_etape
foundConcours.date_de_sortie = concours.date_de_sortie
foundConcours.numero_type = concours.nbre_rangs
foundConcours.titre_concours = concours.titre_concours
foundConcours.numero_nature = concours.numero_nature
Dim e As Concour = (From o In x.Concours Where o.numero_concours = concours.numero_concours Select o).First()
x.Entry(e).OriginalValues().SetValues(concours)
x.ChangeTracker.DetectChanges()
x.SaveChanges()
End Sub
ps: 更新中にエラー メッセージは表示されませんが、データベース側ではなくテーブルで値が更新されているだけです !!