问题是我想在不刷新页面的情况下编辑表中的单元格,所以我决定将JSON与jQuery一起使用,并且使用了jeditable插件。但是,在添加代码之后,我发现当我删除单元格并在其中重写任何值时,它都工作得很好,并且将值保存在数据库中,但是问题是当我不删除值并将其添加到其中时字母或任何文本,它将保存旧值而没有新文本,因此我不知道这是什么问题。我已经附上了代码C#和jQuery。
$(document).ready(function() {
var oldValue = '';
var submitdata = {}
submitdata['fast'] = true;
submitdata['pwet'] = 'youpla';
$(".edit").editable("/ShiftTypes/saveuser", {
type: "text",
onedit: function() {
return true;
},
cancel: 'Cancel',
cssclass: 'custom-class',
cancelcssclass: 'btn btn-danger',
submitcssclass: 'btn btn-success',
maxlength: 200,
// select all text
select: true,
label: 'This is a label',
onreset: function() {},
onsubmit: function() {},
showfn: function(elem) {
elem.fadeIn('fast')
},
submit: 'Save',
onsubmit: function(settings, original) {
oldValue = original.revert;
//Swal.fire({
// position: 'top',
// type: 'success',
// title: 'Your work has been saved',
// showConfirmButton: false,
// timer: 1500
//});
},
before: function() {},
callback: function(value, settings) {
var jsonData = $.parseJSON(value);
if (jsonData.status) {
$(this).text(jsonData.value);
} else {
$(this).text(oldValue);
}
},
submitdata: function() {
return {
id: $(this).data('id'),
PropertyName: $(this).data('propertyname')
}
},
/* submitdata as a function example
submitdata : function(revert, settings, submitdata) {
console.log("Revert text: " + revert);
console.log(settings);
console.log("User submitted text: " + submitdata.value);
},
*/
tooltip: "Click to edit...",
width: 160
});
})
C#的代码[ShiftTypesController / saveuser]:
[HttpPost]
public ActionResult saveuser(int id, string propertyName, string value) {
var status = false;
var message = "";
//Update data to database
using(PaediatricDBEntities db = new PaediatricDBEntities()) {
var user = db.ShiftTypes.Find(id);
if (user != null) {
db.Entry(user).Property(propertyName).CurrentValue = value;
db.SaveChanges();
status = true;
} else {
message = "Error!";
}
}
var response = new {
value = value, status = status, message = message
};
JObject o = JObject.FromObject(response);
return Content(o.ToString());
}