最近模仿了劉冬大哥的<開源框架完美組合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文雙語言小型企業網站Demo>之后發現一個問題就是前台datagrid如果刪除多行之后,然后再編輯就不能進入對應的行信息.如圖:
前台選擇多行->刪除


刪除成功


這里變成了刪除的編碼,

前台代碼
| <script type="text/javascript"> $(function () { $('#test').datagrid({ title: '風格信息', iconCls: 'icon-save', fit: true, nowrap: false, striped: true, //collapsible: true, url: '/GenerManage/LoadAllByPage/', sortName: 'GenreId', remoteSort: false, idField: 'GenreId', frozenColumns: [[ { field: 'ck', checkbox: true } ]], columns: [[ { field: 'GenreId', title: '編碼', width: '80', align: 'center' }, { field: 'Name', title: '名稱', width: '200', align: 'left' }, { field: 'Desctiption', title: '描述', width: '350', align: 'left' } ]], pagination: true, rownumbers: true, toolbar: [{ id: 'btnadd', text: '添加', iconCls: 'icon-add', handler: function () { this.href = '/GenerManage/View/'; } }, { id: 'btnupdate', text: '修改', iconCls: 'icon-save', handler: function () { var rows = $('#test').datagrid('getSelected'); if (rows) { this.href = "/GenerManage/View/" + rows.GenreId; } else { $.messager.alert('提示', '請選擇要修改的數據'); return; } } }, '-', { id: 'btncut', text: '刪除', iconCls: 'icon-cut', handler: function () { //獲取表格選擇行 var rows = $('#test').datagrid('getSelections'); //判斷是否選擇行 if (!rows || rows.length == 0) { $.messager.alert('提示', '請選擇要刪除的數據!', 'info'); return; }
var parm; //循環給提交刪除參數賦值(音樂風格編碼) $.each(rows, function (i, n) { if (i == 0) { parm = "idList=" + n.GenreId; } else { parm += "&idList=" + n.GenreId; } }); $.messager.confirm('提示', '是否刪除選中數據?', function (r) { if (!r) { return; } //提交 $.post('/GenerManage/Delete/', parm, function (msg) { if (msg.IsSuccess) { $.messager.alert('提示', msg.Message, 'info', function () { //重新加載當前頁 $('#test').datagrid('reload'); }); } else { $.messager.alert('提示', msg.Message, 'info') } }); }); } }] }); var p = $('#test').datagrid('getPager'); if (p) { $(p).pagination({ onBeforeRefresh: function () { alert('before refresh'); } }); } }); </script> |
后台代碼
| //顯示創建或者修改信息 public ActionResult View(int? id) { Genre g = (from gener in msdb.Genre where gener.GenreId == id select gener).FirstOrDefault(); if (g == null) g = new Genre(); return View(g); } [HttpPost] public ActionResult Delete(IList<int> idList) { //判斷判斷是否刪除多行數據 if (idList.Count > 1) { foreach (int i in idList) { var gener = from g in msdb.Genre where g.GenreId == i select g; msdb.Genre.DeleteAllOnSubmit(gener); } } else { var gener = from g in msdb.Genre where g.GenreId == idList.First() select g; msdb.Genre.DeleteAllOnSubmit(gener); } //這里刪除多條記錄的時候提示varchar-int失敗所以用上面的辦法 // msdb.Genre.DeleteAllOnSubmit(idList.Cast<Genre>().ToList()); msdb.SubmitChanges(); return Json(new { IsSuccess = true, Message = "刪除成功" }); } |
