Imagem de efeito
Código da página
@Html.Kendo().MultiSelectFor(M => M.MT_OperationList[0].OperatorUserID).DefaultOptions().DataSource(ds => ds.Read("GetOperatorUsers", "MaintainManage"))
@Html.ValidationMessageFor(M => M.MT_OperationList[0].OperatorUserID)
@Html.Kendo().MultiSelectFor(m => m.Repair_Owner).DefaultOptions().DataSource(ds => ds.Read("GeRecordOwnerEmp", "Troubles")).HtmlAttributes(new { style = "width: 60%;font-size:12px" })
@Html.ValidationMessageFor(m => m.Repair_Owner)
<script>
var flag;
var vm3 = kendo.observable({
flag:0,
OnFunJB: function (e) {
if (flag == 1) { return false; }
flag = 1;
var strJsonData = FormatBomDataJB("#grid2");
$.ajax({
dataType: "json",
type: "post",
url: "/MaintainManage/SaveMTOrderJB",
data: {
mTOrderJbJson: strJsonData,
actionType: "Change"
},
success: function (data, type) {
if (data == "OK") {
alert("报工成功!!!");
window.location.href = '@Url.Action("MTOrderJB")';
} else {
alert("报工失败!!!");
return;
}
}
});
e.stopPropagation();
}
});
kendo.bind($("#editJB"), vm3);
</script>
function FormatBomDataJB(_gridId) {
// alert($("#MT_OperationList_0__OperatorUserID").val());
var operationList = $("#MT_OperationList_0__OperatorUserID").val();
if (!operationList.length) {
alert("请选择保养人员!!!");
return;
}
var dataGrid = $(_gridId).data('kendoGrid');
var data = dataGrid._data;
var row_count = dataGrid.dataSource.data().length;
var strJson = "{\"item\":[";
//strJson = strJson + "," + "\"item\":[";
for (var i = 0; i < row_count; i++) {
strJson = strJson +
"{\"id\":\"" + data[i].Id + "\"," +
"\"orderNumber\":\"" + data[i].OrderNumber + "\"," +
"\"operationName\":\"" + data[i].OperationName + "\"," +
"\"operationDesc\":\"" + data[i].OperationDesc + "\"," +
"\"groupName\":\"" + data[i].GroupName + "\"," +
"\"sTDTimes\":\"" + data[i].STDTimes + "\"," +
"\"unit\":\"" + data[i].Unit + "\"," +
"\"workTimes\":\"" + data[i].WorkTimes + "\"," +
"\"OperatorUserIDList\":\"" + operationList + "\"," +
"\"optQty\":\"" + $("#" + data[i].Id).val() + "\"" +
"},"
}
return strJson.substring(0, strJson.length - 1) + "]}";
}
Código de dados
/// <summary>
/// 更新报工
/// </summary>
/// <param name="strJsonMTOrderJB"></param>
/// <returns></returns>
public string UpdateMTOrderJB(string strJsonMTOrderJB)
{
try
{
JObject JsonObject = (JObject)JsonConvert.DeserializeObject(strJsonMTOrderJB);
JObject ItemObject = null;
for (var i = 0; i < JsonObject["item"].Count(); i++)
{
ItemObject = (JObject)JsonConvert.DeserializeObject(JsonObject["item"][i].ToString());
var id = Convert.ToDecimal(ItemObject["id"]);
var workTime = Convert.ToDecimal(ItemObject["workTimes"]);
var optQty = Convert.ToDecimal(ItemObject["optQty"]);
var Info = db.EMS_M_DOC_OPERATION.Where(x => x.ID == id).FirstOrDefault();
Info.WORK_TIMES = Convert.ToDecimal(ItemObject["workTimes"]) + Convert.ToDecimal(ItemObject["optQty"]);
Info.UPDATE_BY = UserSession.Account.Id;
Info.UPDATE_TIME = DateTime.Now;
db.SaveChanges();
string strSEQ = GetMaxId("EMS_M_DOC_WORKTIME", ItemObject["orderNumber"].ToString());
var work = new EMS_M_DOC_WORKTIME()
{
ID = GetMaxId("EMS_M_DOC_WORKTIME") + 1,
MT_NO = ItemObject["orderNumber"].ToString(),
OPERATION = ItemObject["operationName"].ToString(),
OPERATION_DESC = ItemObject["operationDesc"].ToString(),
UNIT = ItemObject["unit"].ToString(),
WORK_TIMES = workTime + optQty,
WT_SEQ = strSEQ,
UPDATE_BY = UserSession.Account.Id,
UPDATE_TIME = DateTime.Now
};
db.EMS_M_DOC_WORKTIME.Add(work);
db.SaveChanges();
if (i == 0)
{
string OperatorUserList = ItemObject["OperatorUserIDList"].ToString();
string[] strArrOpeUser = OperatorUserList.Split(',');
foreach (var item in strArrOpeUser)
{
if (string.IsNullOrEmpty(item))
{
continue;
}
var userID = Convert.ToDecimal(item);
var ope = new EMS_M_DOC_OPERATOR()
{
ID = GetMaxId("EMS_M_DOC_OPERATOR") + 1,
MT_NO = ItemObject["orderNumber"].ToString(),
OPERATOR_ID = userID,
WT_SEQ = strSEQ,
UPDATE_BY = UserSession.Account.Id,
UPDATE_TIME = DateTime.Now
};
db.EMS_M_DOC_OPERATOR.Add(ope);
db.SaveChanges();
}
}
}
return "OK";
}
catch (Exception ex)
{
return "NG-" + ex.Message;
}
}
Exemplo de referência de conexão de string
<span style="font-size:18px;"><script>
function GetZone() {
//获取input所在div的对象
var ob = document.getElementById("div1");
//获取div中所用的IUPUT控件集合
var col = div1.getElementsByTagName("INPUT");
//定义一个变量并初始化为空
var str = "";
var count = 0;
//循环遍历,判断INPUT是否选中
for (var i = 0 ; i < col.length; i++) {
if (col[i].checked == true) {
count++;
if (count == 1) {//当是一个值得时候,直接把选中的值赋给字符串
str += col[i].value;
}
else {
str += "/" + col[i].value;//多个被选中的时候,需要把选定的值不断的拼接
}
//str+=col[i].value+"/";
}
}
document.getElementById("zonestr").value = str;//把选择完后的字符串给一个隐藏空间以便向后台传送
}
</script></span>
A caixa de texto de vários valores é selecionada e salva como um único valor
Imagem de efeito
Código de interface
<td>
@Html.Kendo().MultiSelectFor(m => m.Repair_Owner).DefaultOptions().DataSource(ds => ds.Read("GeRecordOwnerEmp", "Troubles")).HtmlAttributes(new { style = "width: 60%;font-size:12px" })
@Html.ValidationMessageFor(m => m.Repair_Owner)
</td>
Código JS
function submitFunc() {
alert("1!");
var repair_owner = $('#Repair_Owner').val();
if (repair_owner == undefined || repair_owner.text == "") {
alert("维修人员不能为空!");
return;
}
var supervisorid = $('#SupervisorId').val();
if (supervisorid.length == 0 || supervisorid.text=="请选择") {
alert("课级主管不能为空!");
return;
}
var managerid = $('#ManagerId').val();
if (managerid.length == 0 || managerid.text == "请选择") {
alert("理级主管不能为空!");
return;
}
var shop = $('#Shop').val();
if (shop.length == 0 || shop.text == "请选择") {
alert("车间不能为空!");
return;
}
var area = $('#Area').val();
if (area.length == 0 || area.text == "请选择") {
alert("区域不能为空!");
return;
}
var strrepair_owner = "";
for (var i = 0; i < repair_owner.length; i++) {
if (i <= 0) {
strrepair_owner = repair_owner;
}
else {
//strrepair_owner += "," + repair_owner;
strrepair_owner = repair_owner.join(",");
}
}
if (window.location.pathname == "/Troubles/OwnerCreate") {
$.ajax({
dataType: "json",
type: "post",
url: "/Troubles/OwnerCreate",
data: {
rRepair_Owner: strrepair_owner,
rSupervisorid: supervisorid,
rManagerId: managerid,
rShop: shop,
rArea: area,
rOnDuty: $('#OnDuty').val(),
rOwnerSeq: $('#OwnerSeq').val(),
rNoDeal_Alarm_L: $('#NoDeal_Alarm_L').val(),
rNoDeal_Alarm_M: $('#NoDeal_Alarm_M').val(),
rNoFinish_Alarm_L: $('#NoFinish_Alarm_L').val(),
rNoFinish_Alarm_M: $('#NoFinish_Alarm_M').val(),
},
success: function (data, type) {
if (data == "OK") {
alert("修正保存成功!!!");
window.location.href = '@Url.Action("RepairOwnerIndex")';
} else {
alert(data);
return;
}
}
});
}
else {
$('form').submit();
}
}
O valor da string de dados do código principal
for (var i = 0; i < repair_owner.length; i++) {
if (i <= 0) {
strrepair_owner = repair_owner;
}
else {
//strrepair_owner += "," + repair_owner;
strrepair_owner = repair_owner.join(",");
}
}
Código de controle
[UserAuthorize(FuncID.维修责任区_Create)]
[HttpPost]
public ActionResult OwnerCreate( string rRepair_Owner, int rSupervisorid, int rManagerId,string rShop,string rArea,string rOnDuty,string rOwnerSeq,
int rNoDeal_Alarm_L, int rNoDeal_Alarm_M, int rNoFinish_Alarm_L, int rNoFinish_Alarm_M)
{
using (var handler = new TroublesHandler())
{
return Json(handler.InsertOwner(rRepair_Owner, rSupervisorid, rManagerId, rShop, rArea, rOnDuty, rOwnerSeq, rNoDeal_Alarm_L, rNoDeal_Alarm_M, rNoFinish_Alarm_L, rNoFinish_Alarm_M), JsonRequestBehavior.AllowGet);
}
}
Código do manipulador
//维修责任人添加责任区写入数据
public string InsertOwner(string rRepair_Owner, int rSupervisorid, int rManagerId, string rShop, string rArea, string rOnDuty, string rOwnerSeq,
int rNoDeal_Alarm_L, int rNoDeal_Alarm_M, int rNoFinish_Alarm_L, int rNoFinish_Alarm_M)
{
try {
#region EMS_R_OWNER_LEADER数据写入
var Erol = new CommonResource.Models.EMS_R_OWNER_LEADER()
{
ID = GetMaxId("EMS_R_OWNER_LEADER") + 1,
PLANT_ID = UserSession.Plant.Id,
SHOP = rShop,
AREA = rArea,
MANAGER_ID = rManagerId,
LEADER_ID = rSupervisorid,
//RECORD_MUST=isMustRecord,
USEAGE = "U1",
NO_DEAL_ALARM_L = rNoDeal_Alarm_L,
NO_DEAL_ALARM_M = rNoDeal_Alarm_M,
NO_FINISH_ALARM_L = rNoFinish_Alarm_L,
NO_FINISH_ALARM_M = rNoFinish_Alarm_M,
UPDATE_BY = UserSession.Account.Id,
UPDATE_TIME = DateTime.Now,
DELETEFLAG = 0,
};
db.EMS_R_OWNER_LEADER.Add(Erol);
db.SaveChanges();
#endregion
#region EMS_R_OWNER_MEMBER数据写入
string[] sArrDefect_rRepair_Owner = rRepair_Owner.Split(',');
for (int i = 0; i < sArrDefect_rRepair_Owner.Length; i++)
{
var ownerJson = sArrDefect_rRepair_Owner[i].ToString().Trim() == "" ? null : sArrDefect_rRepair_Owner[i].ToString().Trim();
var Erom = new CommonResource.Models.EMS_R_OWNER_MEMBER()
{
ID = GetMaxId("EMS_R_OWNER_MEMBER") + 1,
OWNER_ID = db.ACCOUNT.Where(t => t.NAME == ownerJson).Select(t => t.ID).FirstOrDefault(),
ON_DUTY = rOnDuty,
GROUP_ID = GetMaxId("EMS_R_OWNER_LEADER"),
UPDATE_BY = UserSession.Account.Id,
UPDATE_TIME = DateTime.Now,
DELETEFLAG = 0,
};
db.EMS_R_OWNER_MEMBER.Add(Erom);
db.SaveChanges();
}
#endregion
return "OK";
}
catch (Exception ex)
{
return "NG-" + ex.Message;
}
}
Armazenamento de string de segmentação de código principal
string[] sArrDefect_rRepair_Owner = rRepair_Owner.Split(',');
var ownerJson = sArrDefect_rRepair_Owner[i].ToString().Trim() == "" ? null : sArrDefect_rRepair_Owner[i].ToString().Trim();
OWNER_ID = db.ACCOUNT.Where(t => t.NAME == ownerJson).Select(t => t.ID).FirstOrDefault(),
ON_DUTY = rOnDuty,
Valor C # winform e conexão de descrição
O efeito é como mostrado na figura.
Após o valor ser obtido pelo SQL, a chamada é reciclada
public ExecuteResult GetStationInfo(string site)
{
try
{
exeRes = new ExecuteResult();
string sqlStr = @" select b.site, b.line, c.stage, d.station_type, a.station_name,d.station_type_desc
from imes.m_station a,
imes.m_line b,
imes.m_stage c,
imes.m_station_type d,
imes.m_operate_type f
where a.line = b.line
and a.stage = c.stage
and a.station_type = d.station_type
and d.operate_type = f.scan_type
and d.operate_type ='Input'
and d.client_type ='MANU'
and a.enabled = 'Y'
and b.enabled = 'Y'
and c.enabled = 'Y'
and d.enabled = 'Y'
and b.site = :site
order by site, line, stage, station_type, station_name ";
object[] para = new object[] { site };
exeRes.Anything = utility.Query(sqlStr, para);
exeRes.Status = true;
}
catch (Exception ex)
{
exeRes.Message = "Error:" + ex.Message;
exeRes.Status = false;
}
return exeRes;
}
public void Show_Terminal()
{
TVTerminal.Nodes.Clear();
exeRes = controller.GetStationInfo(combFactory.Text);
if (!exeRes.Status)
{
MessageBox.Show(exeRes.Message);
return;
}
dtTemp = (DataTable)exeRes.Anything;
//string sPreLineType = "";
string sPreLine = "";
string sPreStage = "";
string sPreStationType = "";
for (int i = 0; i <= dtTemp.Rows.Count - 1; i++)
{
string Site = dtTemp.Rows[i]["SITE"].ToString();
string sLine = dtTemp.Rows[i]["LINE"].ToString();
string sStage = dtTemp.Rows[i]["STAGE"].ToString();
string sStationType = dtTemp.Rows[i]["STATION_TYPE"].ToString();
string sStation = dtTemp.Rows[i]["STATION_NAME"].ToString()+" || "+ dtTemp.Rows[i]["STATION_TYPE_DESC"].ToString();
string sStationType = dtTemp.Rows[i]["STATION_TYPE"].ToString() + " || " + dtTemp.Rows[i]["STATION_TYPE_DESC"].ToString();
string sStation = dtTemp.Rows[i]["STATION_NAME"].ToString()+" || "+ dtTemp.Rows[i]["STATION_TYPE_DESC"].ToString();