Valider plusieurs documents à partir d'une vue (Validation en masse)
Remarque :
- Il faudra bien vérifier que la vue ne présente que des documents qui sont à l'étape souhaitée
Code à mettre dans l'onglet code du paramétrage de la vue :
Dans le premier pavé :
if(!IsPostBack)
{
System.Reflection.PropertyInfo pi = this.Page.GetType().GetProperty("Menu");
DevExpress.Web.ASPxMenu menu = pi.GetValue(this.Page, null) as DevExpress.Web.ASPxMenu;
if (menu != null && Avanteam.Application.Security.APSUser.GetUserFromSession().Roles.Contains("Admin"))
{
DevExpress.Web.MenuItem mnuActions = menu.Items.FindByName("MenuActions");
DevExpress.Web.MenuItem mnuClotureEnMasse = new DevExpress.Web.MenuItem("Clôture en masse", "ACT.ClotureEnMasse"); //En gras, le libellé de l'action dans le menu
mnuClotureEnMasse.BeginGroup=true;
mnuClotureEnMasse.Name = "User.ClotureEnMasse";
mnuActions.Items.Add(mnuClotureEnMasse);
}
}
Dans le second pavé :
protected override void UserOnInit(EventArgs e)
{
DevExpress.Web.ASPxButton btnClotureEnMasse = new DevExpress.Web.ASPxButton();
btnClotureEnMasse.ID = "ui_btn_User_ClotureEnMasse";
btnClotureEnMasse.Text = "BTN ClotureEnMasse";
btnClotureEnMasse.CommandName = "User.ClotureEnMasse";
btnClotureEnMasse.UseSubmitBehavior = false;
btnClotureEnMasse.Command += new CommandEventHandler(btnClotureEnMasse_Command);
this.Controls.Add(btnClotureEnMasse);
StringBuilder sb = new StringBuilder();
sb.AppendLine("function MyCustomAction(name){");
sb.AppendLine(" switch(name)");
sb.AppendLine(" {");
sb.AppendLine(" case \"User.ClotureEnMasse\":");
sb.AppendLine(" " + btnClotureEnMasse.ClientID + ".DoClick();");
sb.AppendLine(" break;");
sb.AppendLine(" }");
sb.AppendLine("}");
sb.AppendLine("UserMenuItemClick = MyCustomAction;");
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UserCustomActons", sb.ToString(), true);
}
void btnClotureEnMasse_Command(object sender, CommandEventArgs e)
{
List<object> lst = Grid.GetSelectedFieldValues("id");
foreach (string idDoc in lst)
{
try
{
Avanteam.Application.WorkflowTools.ValidateStep(idDoc, "Clore", UserInfo.FullName, "Clôture");
}
catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); }
}
Grid.DataBind();
Grid.Selection.UnselectAll();
}