一、弹出模态框修改和跳转页面修改有点不同。弹出模态框的回填修改的数据可以再页面直接获取。但是呢,跳转页面就不同了,因为页面是跳转的,就算你原页面的数据获取到了,但是跳转后页面数据肯定会被刷新的。
二、首先给数据行内的修改按钮一个点击事件,点击它然后跳转到修改的页面上去,同时别忘了还需要给它拼接个主键的参数,这样拼接的主要目的是知道你所点击的行,然后获取该行的数据。
//打开修改客户页面
function editRecord(ClientID) {
window.location.href = "/ClienteleManagement/Client/
AlterClientelet?ClientID=" + ClientID;
}
2、然后把用控制器传递参数到视图里面去,参数里面int后面加个参数表示可空类型,再用ViewBag来传递主键ID。
public ActionResult AlterClientelet(int? clientID)//客户修改
{
ViewBag.clientID = clientID;
return View();
}
3、然后把控制器的ViewBag.clientID 主键ID,在页面那边赋值到隐藏域里面去,这个隐藏域是写在input标签里面的,传递是用ASP.NET Razor的语法进行传递控制器的代码到页面上去,这样就把主键ID给记录到这里了,因为数据要页面加载的时候就绑定上去,所以最好就把它写在form表单里的最上面。
<!-- 隐藏域 -->
<input type="hidden" id="clientID" name="ClientID" value="@ViewBag.clientID" />
4、在js那里就把这个主键id给获取出来,用它作为全局变量
var clientID = $("#clientID").val();//获取ClientID
5、这时控制器就需要根据这个主键ID来查询出需要回填的数据,查询的方法其实也只是个多表查询,直接查询甚至都不需要多写分页什么的。
6.、视图的数据回填,因为这个修改是跳出原来的页面进行操作的,所以要把它写在页面加载事件里面去,实现页面加载就自动地把数据给回填了。
数据回填用post的方法提交数据,同时要给它个从页面上获取到的参数,再使用loadDatatoForm的方法对表单的数据进行回填。使用loadDatatoForm有两个要求,1.要引用jquery.form.min.js的这个插件,2.要把对应回填数据的input标签里面的name名称改为数据库字段名称。
//修改
$(function () {
//==============数据回填=============
$.post("/ClienteleManagement/Client/SelectClientele", { clientID:
clientID }, function (data) {
$("#dataValidationForm").resetForm();
//下拉框数据回填
createSelect("ClientClassID", "/ClienteleManagement/Client/ClientDownBox",
data.ClientClassID);
//设置表单内容
loadDatatoForm("dataValidationForm", data);
});
});