/// <summary> /// 验证数据 /// </summary> private bool CheckData() { if (string.IsNullOrEmpty(txtCodeName.Text)) { hidInfo.Value = "请输入代码名称!"; txtCodeName.Focus(); return(false); } if (string.IsNullOrEmpty(txtCodeValue.Text)) { hidInfo.Value = "请输入代码值!"; txtCodeValue.Focus(); return(false); } if (CodeQuery.CheckCodeName(txtCodeName.Text.Trim(), this.CodeID, this.CodeGroupID, this.CurOperation)) { hidInfo.Value = "代码名称已经存在,请重新输入名称!"; txtCodeName.Focus(); return(false); } if (CodeQuery.CheckCodeValue(txtCodeValue.Text.Trim(), this.CodeID, this.CodeGroupID, this.CurOperation)) { hidInfo.Value = "代码值已经存在,请重新输入代码值!"; txtCodeValue.Focus(); return(false); } return(true); }
/// <summary> /// 邦定群组数据 /// </summary> private void BindGridView() { DataTable dt = new CodeQuery().GetAllCode(this.CodeGroupID); grid.DataSource = dt; grid.DataBind(); }
/// <summary> /// toolbar事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void toolbar_MenuItemClick(object sender, MenuEventArgs e) { long ID = 0; switch (e.Item.Value) { case "Delete": if (e.Item.Value == "Delete") { int succeed = 0; string CodeGroupNames = ""; for (int j = 0; j < tvOU.CheckedNodes.Count; j++) { Infragistics.WebUI.UltraWebNavigator.Node tn = (Infragistics.WebUI.UltraWebNavigator.Node)tvOU.CheckedNodes[j]; long CodeGroupID = NDConvert.ToInt64(tn.DataKey.ToString()); CodeGroupEntity entity = new CodeGroupEntity(CodeGroupID); if (!CodeQuery.IsExistCode(CodeGroupID)) { entity.IsDeleted = true; new CodeGroupRule().Update(entity); succeed++; } else { CodeGroupNames += "[" + entity.CodeGroupName + "]"; } } if (succeed > 0) { BindTreeView(); PageHelper.ShowMessage("删除成功!"); } if (CodeGroupNames != "") { string msgErr = "代码组名称为" + CodeGroupNames + "的记录不可删除!\\n\\n" + "可先删除代码组中包含的代码记录后再删除该代码组!"; PageHelper.ShowExceptionMessage(msgErr); } } break; case "Update": ID = NDConvert.ToInt64(((Infragistics.WebUI.UltraWebNavigator.Node)tvOU.CheckedNodes[0]).DataKey.ToString()); Page.ClientScript.RegisterStartupScript(this.GetType(), "更新", "showModalWindow('CodeGroupEditLY', '修改',750, 220, '../../web/SysManager/CodeGroupEdit.aspx?Operation=2&ID=' + " + ID + ");", true); break; } }
//------------------------------------------------------------------------------------- /// <summary> /// Выполняет кодовый запрос на объекте. /// </summary> /// <param name="dstObject">Объект, на котором будет выполнен запрос.</param> /// <param name="query">Выполняемый кодовый запрос.</param> public static object ExecCodeQuery(object dstObject, CodeQuery query) { try { DynamicMethod dm = new DynamicMethod("DynMethod", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(object), new Type[] { dstObject.GetType() }, dstObject.GetType(), true); //DynamicMethod dm = new DynamicMethod("DynMethod", null, null, dstObject.GetType(), true); DynamicILInfo dii = dm.GetDynamicILInfo(); SignatureHelper sig = SignatureHelper.GetLocalVarSigHelper(); if(query.LocalVariables != null) foreach(KeyValuePair<Type, bool> i in query.LocalVariables) sig.AddArgument(i.Key, i.Value); dii.SetLocalSignature(sig.GetSignature()); Customize(query.Body, dii, query.Schema); dii.SetCode(query.Body, query.MaxStackSize); DynMethod deleg = (DynMethod)dm.CreateDelegate(typeof(DynMethod), dstObject); return deleg(); //dm.Invoke(dstObject, new object[] { dstObject }); } catch { throw; } }
public static ValuesPair<CodeQuery, List<String>> GetCodeQuery(Type type, string typeWrapperCode) { CSharpCodeProvider cscp = null; try { cscp = new CSharpCodeProvider(); ValuesPair<CodeQuery, List<String>> res = new ValuesPair<CodeQuery, List<string>>(null, new List<string>()); CodeQuery query = new CodeQuery(); query.CodeText = typeWrapperCode; query.ObjectType = type.FullName; CompilerParameters cp = new CompilerParameters(); cp.GenerateInMemory = true; cp.TreatWarningsAsErrors = false; foreach(Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) if(asm.IsDynamic == false) cp.ReferencedAssemblies.Add(asm.Location); CompilerResults cr = cscp.CompileAssemblyFromSource(cp, typeWrapperCode); if(cr.Errors.Count > 0) { foreach(CompilerError err in cr.Errors) res.Value2.Add(String.Format("[{0},{1}] {2} {3}: {4}", err.Line, err.Column, err.IsWarning ? "Warning" : "Error", err.ErrorNumber, err.ErrorText)); } if(cr.Errors.HasErrors) return res; MethodInfo mi = cr.CompiledAssembly.GetType(type.Name).GetMethod("DynamicMethod", BindingFlags.NonPublic | BindingFlags.Instance); MethodBody mb = mi.GetMethodBody(); query.MaxStackSize = mb.MaxStackSize; query.Body = mb.GetILAsByteArray(); query.Schema = Discover(query.Body, mi, type); if(mb.LocalVariables.Count > 0) { query.LocalVariables = new List<KeyValuePair<Type, bool>>(mb.LocalVariables.Count); foreach(LocalVariableInfo lvi in mb.LocalVariables) query.LocalVariables.Add(new KeyValuePair<Type, bool>(lvi.LocalType, lvi.IsPinned)); } res.Value1 = query; return res; } finally { if(cscp != null) cscp.Dispose(); } }