如界面需要实现输入修正值判断是否满足最小值和最大值范围
若满足则返回OK,不满足则返回NG
主要代码
function Onbb(id) {
var opt = $("#Q_" + id);
var pTdOpt = opt.parent().siblings("td");
var AdjustValue = Number(opt.val());
var MinValue = Number(pTdOpt.eq(7).text());
var MaxValue = Number(pTdOpt.eq(8).text());
if (opt.val() != "") {
if (isNaN(opt.val())) {
alert("请输入数字!");
opt.val("");
return false;
}
}
if (AdjustValue < 0) {
opt.focus();
alert("当前修正值不能为负数!!!");
opt.val("");
return false;
}
if (AdjustValue >= MinValue && AdjustValue <= MaxValue) {
var row_count = $("#grid").data("kendoGrid").dataSource.data().length;
pTdOpt.eq(6).text("OK")
for (var i = 0; i < row_count; i++) {
var dataGrid = $("#grid").data('kendoGrid');
var data = dataGrid._data;
data[i].AdjustRes = "OK";
}
} else {
var row_count = $("#grid").data("kendoGrid").dataSource.data().length;
pTdOpt.eq(6).text("NG")
for (var i = 0; i < row_count; i++) {
var dataGrid = $("#grid").data('kendoGrid');
var data = dataGrid._data;
data[i].AdjustRes = "NG";
}
}
}
@model ESDStandard
@{
ViewBag.Menu = "设备治具维修-故障处理";
ViewBag.Title = "领料";
}
<div class="banner-title" style="width:450px">
@ViewBag.Menu-->@ViewBag.Title
</div>
@using (Html.BeginForm("RepairESDRew", "Repair"))
{
@(Html.Kendo().Grid<EMS.Models.ESDStandard>()
.Name("grid")
.Columns(columns =>
{
//columns.Bound(c => c.CallRepairNo).Filterable(false).Sortable(false).Width(80);
columns.Bound(c => c.MtNo).Filterable(false).Sortable(false).Width(80);
columns.Bound(c => c.MachineCode).Filterable(false).Sortable(false).Width(50);
columns.Bound(c => c.Operation).Filterable(false).Sortable(false).Width(50);
columns.Bound(c => c.OperationDesc).Filterable(false).Sortable(false).Width(50);
columns.Bound(c => c.Range).Filterable(false).Sortable(false).Width(80);
columns.Bound(c => c.CheckValue).Filterable(false).Sortable(false).Width(50);
//columns.Bound(c => c.ParamDesc).Filterable(false).Sortable(false).Width(50);
columns.Bound(x => x.AdjustValue).ClientTemplate("<input style=\"width:40px;background-color:yellow \" ID=\"Q_#=Id#\" value=\"0\" type =\"textbox\" οnblur=\"Onbb(#=Id#)\"/> ").Sortable(false).Width(60);
columns.Bound(c => c.AdjustRes).Hidden(false).Filterable(false).Sortable(false).Width(40);
columns.Bound(c => c.MinValue).Hidden(false).Filterable(false).Sortable(false).Width(40);
columns.Bound(c => c.MaxValue).Hidden(false).Filterable(false).Sortable(false).Width(40);
})
.DefaultOptions()
.Filterable(f => f.Enabled(false))
.Events(e => e.DataBound("boundGridMaintainStatus"))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.Read(read => read.Action("GetRepairESDEdit", Html.ControllerName(), new {
strOrderNumber = Model.CallRepairNo }))
.ServerOperation(true)
.Model(m =>
{
m.Id(c => c.Id);
})))
<div class="content-body">
<table class="table">
<tbody>
<tr>
<td> </td>
<td> </td>
<td colspan="3" style="text-align:right;">
<button type="button" class="k-button k-primary" style="width: 100px;" onclick="SaveESD()">修正提交</button>
<button type="button" class="k-button" onclick="history.back()">返回</button>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
}
<script>
function boundGridMaintainStatus() {
$('th span, td').tooltipOnOverflow();
}
$(document).ready(function () {
$(".k-pager-wrap.k-grid-pager.k-widget.k-floatwrap").hide();
$("#grid").kendoTooltip({
show: function (e) {
if ($.trim(this.content.text()) != "") {
$('[role="tooltip"]').css("visibility", "visible");
}
},
hide: function () {
$('[role="tooltip"]').css("visibility", "hidden");
},
filter: "td:nth-child(n+3)",
content: function (e) {
var element = e.target[0];
if (element.offsetWidth < element.scrollWidth) {
var text = $(e.target).text();
return '<div style="min-width:50px;max-width: 500px;">' + text + '</div>';
} else {
$('[role="tooltip"]').css("visibility", "hidden");//解决鼠标一开始放在上面出现空模块
return "";
}
}
}).data("kendoToolTip");
});
function Onbb(id) {
var opt = $("#Q_" + id);
var pTdOpt = opt.parent().siblings("td");
var AdjustValue = Number(opt.val());
var MinValue = Number(pTdOpt.eq(7).text());
var MaxValue = Number(pTdOpt.eq(8).text());
if (opt.val() != "") {
if (isNaN(opt.val())) {
alert("请输入数字!");
opt.val("");
return false;
}
}
if (AdjustValue < 0) {
opt.focus();
alert("当前修正值不能为负数!!!");
opt.val("");
return false;
}
if (AdjustValue >= MinValue && AdjustValue <= MaxValue) {
var row_count = $("#grid").data("kendoGrid").dataSource.data().length;
pTdOpt.eq(6).text("OK")
for (var i = 0; i < row_count; i++) {
var dataGrid = $("#grid").data('kendoGrid');
var data = dataGrid._data;
data[i].AdjustRes = "OK";
}
} else {
var row_count = $("#grid").data("kendoGrid").dataSource.data().length;
pTdOpt.eq(6).text("NG")
for (var i = 0; i < row_count; i++) {
var dataGrid = $("#grid").data('kendoGrid');
var data = dataGrid._data;
data[i].AdjustRes = "NG";
}
}
}
function FormatESDData(_gridId) {
var dataGrid = $(_gridId).data('kendoGrid');
var data = dataGrid._data;
var row_count = dataGrid.dataSource.data().length;
var strJson = "{\"item\":[";
for (var i = 0; i < row_count; i++) {
var OptQty = $("#Q_" + data[i].id).val();
if (OptQty>0) {
strJson = strJson +
"{\"MtNo\":\"" + data[i].MtNo + "\"," +
"\"MachineCode\":\"" + data[i].MachineCode + "\"," +
"\"AdjustValue\":\"" + $("#Q_" + data[i].id).val() + "\"," +
"\"AdjustRes\":\"" + data[i].AdjustRes + "\"" +
"},"
}
}
return strJson.substring(0, strJson.length - 1) + "]}";
}
function SaveESD() {
var strJsonData = FormatESDData("#grid");
$.ajax({
dataType: "json",
type: "post",
url: "/Repair/RepairESDSubmit",
data: {
strRepairESDJson: strJsonData,
},
success: function (data, type) {
if (data == "OK") {
alert("修正保存成功!!!");
window.location.href = '@Url.Action("RepairESDIndex")';
} else {
alert("修正保存失败!!!");
return;
}
},
error: function () {
alert("ERROR:界面数据类型不对!");
}
});
}
</script>
界面实现代码
控制器
public ActionResult GetRepairESDEdit([DataSourceRequest] DataSourceRequest request,string strOrderNumber)
{
using (var handler = new RepairHandler())
{
var list = handler.GetRepairESDEdit(strOrderNumber);
return Json(list.ToDataSourceResult(request));
}
}
//点检修正记录保存
public ActionResult RepairESDSubmit(string strRepairESDJson)
{
using (var handler = new RepairHandler())
{
return Json(handler.UpdateESD(strRepairESDJson), JsonRequestBehavior.AllowGet);
}
}
方法实现
//取点检修正表中数据EMS_ESD_CHECK
public ESDStandard GetRepairESDEdit(int Id)
{
var getList = (from x in db.EMS_ESD_CHECK.AsQueryable()
where x.ID == Id
select new ESDStandard
{
Id = (int)x.ID,
CallRepairNo = x.CALL_REPAIR_NO,
MachineId = x.MACHINE_ID,
MachineCode = db.MACHINE.Where(m => m.ID == x.MACHINE_ID).Select(m => m.CUSTODYNO).FirstOrDefault(),
MtNo = x.MT_NO,
Range = x.STD_RANGE,
StdCode = x.STD_CODE,
Operation = x.OPERATION,
OperationDesc = x.OPERATION,
CheckValue = x.CHECK_VALUE,
}).FirstOrDefault();
return getList;
}
//取点检记录
public List<ESDStandard> GetRepairESDEdit(string strOrderNumber)
{
var getList = (from c in db.EMS_ESD_CHECK
join s in db.EMS_ESD_STANDARD on c.STD_CODE equals s.STD_CODE
where c.CALL_REPAIR_NO == strOrderNumber
select new ESDStandard
{
Id = (int)c.ID,
CallRepairNo = c.CALL_REPAIR_NO,
MachineId = c.MACHINE_ID,
MachineCode = db.MACHINE.Where(m => m.ID == c.MACHINE_ID).Select(m => m.CUSTODYNO).FirstOrDefault(),
MtNo = c.MT_NO,
Range = c.STD_RANGE,
StdCode = c.STD_CODE,
Operation = c.OPERATION,
OperationDesc = c.OPERATION,
CheckValue = c.CHECK_VALUE,
MaxValue =s.STD_TO,
MinValue=s.STD_FROM,
ParamDesc=s.STD_DESC,
}).OrderByDescending(c => c.Id).ToList();
return getList;
}
/// <summary>
/// 更新ESD
/// </summary>
/// <param name="strJsonBOM"></param>
/// <returns></returns>
public string UpdateESD(string strRepairESDJson)
{
try
{
JObject JsonObject = (JObject)JsonConvert.DeserializeObject(strRepairESDJson);
//---------- 解析 Item json成员数组
JObject ItemObject = null;
for (var i = 0; i < JsonObject["item"].Count(); i++)
{
ItemObject = (JObject)JsonConvert.DeserializeObject(JsonObject["item"][i].ToString());
var EsdModel = GetRepairEsd().Where(x => x.MT_NO == ItemObject["MtNo"].ToString()).SingleOrDefault();
{
EsdModel.ADJUST_VALUE = Convert.ToDecimal(ItemObject["AdjustValue"].ToString());
EsdModel.ADJUST_RES = ItemObject["AdjustRes"].ToString();
EsdModel.ADJUST_BY = (decimal)UserSession.Account.Id;
EsdModel.ADJUST_TIME = DateTime.Now;
EsdModel.UPDATE_BY= (decimal)UserSession.Account.Id;
EsdModel.UPDATE_TIME= DateTime.Now;
}
db.SaveChanges();
}
return "OK";
}
catch (Exception ex)
{
return "NG-" + ex.Message;
}
}
实现效果如图