protected void cmdAddUser_Click(object sender, EventArgs e) { string[] userIds = this.txtUserToAdd.Value.Trim().Trim(';').Split(';'); if (userIds != null && userIds.Length > 0) { using (ISession session = new Session()) { DataSet ds = session.CreateObjectQuery("select max(UserSequnce) as UserSequnce,max(StepIndex) as StepIndex from OrderApproveDef where OrderTypeCode=?typeCode") .Attach(typeof(OrderApproveDef)) .SetValue("?typeCode", this.OrderTypeCode, "OrderTypeCode") .DataSet(); int maxSeq = ds.Tables[0].Rows.Count <= 0 ? 0 : Magic.Framework.Utils.Cast.Int(ds.Tables[0].Rows[0]["UserSequnce"], 0); int maxIndex = ds.Tables[0].Rows.Count <= 0 ? 0 : Magic.Framework.Utils.Cast.Int(ds.Tables[0].Rows[0]["StepIndex"], 0); try { session.BeginTransaction(); for (int i = 0; i < userIds.Length; i++) { int userId = Magic.Framework.Utils.Cast.Int(userIds[i], 0); if (userId <= 0) { continue; } OrderApproveDef def = new OrderApproveDef(); def.OrderTypeCode = this.OrderTypeCode; def.UserID = userId; def.UserSequnce = (++maxSeq); def.StepIndex = (++maxIndex); def.Create(session); } session.Commit(); WebUtil.ShowMsg(this, "签核用户添加成功"); this.QueryAndBindData(session); } catch (Exception er) { session.Rollback(); WebUtil.ShowError(this, er); } } } }
private void SortDefines(IList <OrderApproveDef> defines) { if (defines == null || defines.Count <= 1) { return; } bool exchanged = true; while (exchanged) { exchanged = false; for (int i = 1; i < defines.Count; i++) { if (defines[i - 1].UserSequnce > defines[i].UserSequnce) { OrderApproveDef t = defines[i - 1]; defines[i - 1] = defines[i]; defines[i] = t; exchanged = true; } } } }
protected void MagicItemCommand(object sender, MagicItemEventArgs e) { if (e.CommandName != "Save" && e.CommandName != "Delete") { WebUtil.ShowError(this, "无效的命令"); return; } if (this.repeatControl.Items.Count <= 0) { return; } IList <OrderApproveDef> defines = new List <OrderApproveDef>(); foreach (RepeaterItem item in this.repeatControl.Items) { HtmlInputCheckBox chk = item.FindControl("checkbox") as HtmlInputCheckBox; if (e.CommandName == "Delete" && chk.Checked) { continue; } HtmlInputText txt = item.FindControl("txtSeq") as HtmlInputText; int userId = Magic.Framework.Utils.Cast.Int(chk.Value, -1); if (userId <= 0) { WebUtil.ShowError(this, "无法读取签核用户资料,请和管理员联系"); return; } OrderApproveDef def = new OrderApproveDef(); def.OrderTypeCode = this.OrderTypeCode; def.UserID = userId; def.UserSequnce = Magic.Framework.Utils.Cast.Int(txt.Value); defines.Add(def); } using (ISession session = new Session()) { try { session.BeginTransaction(); session.CreateEntityQuery <OrderApproveDef>() .Where(Exp.Eq("OrderTypeCode", this.OrderTypeCode)) .Delete(); this.SortDefines(defines); for (int i = 1; i <= defines.Count; i++) { defines[i - 1].StepIndex = i; defines[i - 1].Create(session); } session.Commit(); if (e.CommandName == "Save") { WebUtil.ShowMsg(this, "签核顺序保存成功"); } else { WebUtil.ShowMsg(this, "选择的签核人员已经删除"); } this.QueryAndBindData(session); } catch (Exception er) { session.Rollback(); WebUtil.ShowError(this, er); } } }