開發工具與關鍵技術:VS 修改
作者:聽民謠的老貓
撰寫時間:2019/4/17 15:15
總結一下信息管理的修改部分(省略前端)。
______ 修改
首先在設置操作按鈕時要確保獲取到了所有數據的ID值,以爲我們是通過ID來查詢信息,如果你在這裏出現錯誤的話就會導致數據的回填失敗。
- 根據ID查詢信息(控制器部分)
public ActionResult selectEmployeeById(自定義方法名)(int EmployeeID(上面設置操作按鈕時封裝好的參數)) {
EmployeeVo EmployeeInfo(自定義名稱) = (from tbEmployee(自定義的表名) in myModels.PW_Employee(連接的表)
(EmployeeVo在我寫的關於查詢的博客中有講過,它是一個封裝類)
join tbUser(自定義的表名) in myModels.PW_User(連接的表) on tbEmployee.UserID(連接的條件) equals tbUser.UserID(連接的條件)
where tbEmployee.EmployeeID(查詢條件) == EmployeeID
select new EmployeeVo
{ (爲自定義類的每個字段賦值)
EmployeeID = tbEmployee.EmployeeID,
UserID = tbUser.UserID
}).Single();
return Json(EmployeeInfo, JsonRequestBehavior.AllowGet);
(將查詢出來的數據返回)
}
- 點擊修改按鈕彈出修改模態框(視圖層部分)
//彈出修改的模態框
function openUpdateModal(自定義)(mployeeID(自定義)) {
//重置表單
$("#formInsertExaminee(表單ID)").resetForm()
});
//查詢考生信息,回填數據
$.post("selectEmployeeById(獲取修改數據的路徑)", { EmployeeID(設置操作按鈕時封裝的參數): mployeeID(自定義) }, function (stuData) {
(stuData用來接收查詢出來的數據)
//下拉框數據綁定&數據回填
createSelect("DepartmentID(下拉框ID)", "selectDepartment(下拉框數據查詢方法)", stuData.DepartmentID);
(stuData.DepartmentID查詢出來的數據中的DepartmentID)
//其他表單數據回填
loadDatatoForm("formUpdateExaminee(表單ID)", stuData);
});
//彈出模態框
$("#modUpdateExaminee(模態框ID)").modal("show");
}
- 保存修改(視圖層部分)
//保存修改
function 自定義方法名() {
//獲取頁面數據
var 自定義A = $("#模態框ID [name='模態框文本框名稱']").val();
var 自定義B = $("#模態框ID [name='模態框下拉框名稱']").val();
........ (按照上面同樣的格式還有就繼續獲取)
//數據完整性驗證
if ( 自定義B> 0 && 自定義A!= "" && ) {
(數據類型不同判斷條件也不同)
//加載層
var load = layer.load();
//提交表單
$("#表單ID").ajaxSubmit(function (returnJson) {
//關閉加載層
layer.close(load);
if (returnJson.State) {
layer.msg(returnJson.Text, { icon: 1, title: "提示" });
//關閉模態框
$("#模態框ID").modal("hide");
//刷新表格
表格ID.reload();
- 保存修改(控制器部分)
public ActionResult 自定義(PW_Employee數據庫的表 pwEmployee自定義){
(因爲修改數據是把修改的數據傳入到對應的表,pwEmployee是我用來接收修改數據的表對象)
//判斷信息是否與數據庫已有數據重複
int countEmployee(自定義) = (from tbEmployee(自定義) in myModels.PW_Employee
where tbEmployee.EmployeeID != pwEmployee.EmployeeID &&
( tbEmployee.EmployeeNumber ==pwEmployee.EmployeeNumber ||
tbEmployee.EmployeeName == pwEmployee.EmployeeName)
(用接收到修改數據的pwEmployee與數據庫中的PW_Employee做相應的數據比較,判斷是否與已有數據重複)
if (countEmployee == 0) {
//修改學生表
//提取需要修改的學生信息
PW_Employee Employee = (from tbEmployee in myModels.PW_Employee
where tbEmployee.EmployeeID == pwEmployee.EmployeeID
select tbEmployee).Single();
(通過tbEmployee.EmployeeID == pwEmployee.EmployeeID來提取到數據庫中對應的表信息)
_____ 筆記
這裏最容易因爲獲取不到EmployeeID導致數據異常。
(解決方法:就是你寫前端修改模態框的時候是不是寫了EmployeeID的隱藏域,並且隱藏域是否包含在提交數據的表單中,或者隱藏域的命名是否與數據庫命名一致。)
(將數據庫中的表信息替換成我們接受到的對應修改信息)
//編號
Employee.EmployeeNumber = pwEmployee.EmployeeNumber;
//姓名
Employee.EmployeeName = pwEmployee.EmployeeName;
//保存修改
myModels.Entry(Employee).State = EntityState.Modified;(修改關鍵句)
if (myModels.SaveChanges() > 0)
{
(判斷數據庫是否已經新增,也就是判斷數據庫是否發生改變) returnJson.Text = "修改成功^-^";
}