WTM(ASP.NET Core)自定义列表按钮动作

        WTM具有强大的代码生成器,可以帮助开发者自动生成增删查改代码和对应的操作视图,十分方便。但是,实际情况下,咱们需要额外开发一些功能来满足客户的使用需求。那么就需要额外添加一些按钮来满足需求。
    咱们使用代码生成器,的默认按钮。

protected override List<GridAction> InitGridAction()
    {
        return new List<GridAction>
        {
            this.MakeStandardAction("School", GridActionStandardTypesEnum.Create, "新建","", dialogWidth: 800),
            this.MakeStandardAction("School", GridActionStandardTypesEnum.Edit, "修改","", dialogWidth: 800),
            this.MakeStandardAction("School", GridActionStandardTypesEnum.Delete, "删除", "",dialogWidth: 800),
            this.MakeStandardAction("School", GridActionStandardTypesEnum.Details, "详细","", dialogWidth: 800),
            this.MakeStandardAction("School", GridActionStandardTypesEnum.BatchEdit, "批量修改","", dialogWidth: 800),
            this.MakeStandardAction("School", GridActionStandardTypesEnum.BatchDelete, "批量删除","", dialogWidth: 800),
            this.MakeStandardAction("School", GridActionStandardTypesEnum.Import, "导入","", dialogWidth: 800),
            this.MakeStandardExportAction(null,false,ExportEnum.Excel)
        };
    }

     那么自定义的按钮应该怎么写呢?

protected override List<GridAction> InitGridAction()
{
    var actions = new List<GridAction>
  {
    //调用页面上的名为test(ids,datas)的js方法
    this.MakeAction(null,null,"ScriptButton",null, GridActionParameterTypesEnum.NoId).SetOnClickScript("test"),
    //默认弹出对话框,并在每行显示按钮。通过whereStr指定将当前数据的ModelName字段的值拼接到url中,通过SetQueryString将固定的字符串拼到url中
    //下面这个语句最终访问的url为 : /_Admin/ActionLog/Details?id=xxx&ModelName=xxx&a=1
    this.MakeAction("ActionLog","Details","详情(Dialog)","Details dialog", GridActionParameterTypesEnum.SingleId,"_Admin",whereStr:x=>x.ModuleName).SetShowInRow(true).SetQueryString("a=1"),
    //设置IsRedirect和ShowDialog为true,弹出新浏览器窗口,并在每行显示按钮
    this.MakeAction("ActionLog","Details","详情(新窗口)","Details new window", GridActionParameterTypesEnum.SingleId,"_Admin").SetShowDialog(true).SetIsRedirect(true).SetShowInRow(true).SetQueryString("a=2"),
    //设置IsRedirect为true,ShowDialog为false,在本窗口或tab页上显示,并在每行显示按钮
    this.MakeAction("ActionLog","Details","详情(本窗口)","Details new window", GridActionParameterTypesEnum.SingleId,"_Admin").SetShowDialog(false).SetIsRedirect(true).SetShowInRow(true).SetQueryString("a=3"),
  };
  return actions;
}

SetIsRedirect=false,ShowDialog=true

弹出模式对话框展现页面

SetIsRedirect=false,ShowDialog=false

不弹出任何页面,只是在后台调用方法并执行方法返回的js

SetIsRedirect=true,ShowDialog=true

打开新的浏览器窗口显示页面

SetIsRedirect=true,ShowDialog=false

在当前页或者显示页面,如果是Tab模式则在新Tab页上显示

SetOnClickScript

扫描二维码关注公众号,回复: 11339843 查看本文章

如果设置了OnClickScript,则框架运行指定的js方法
比如设置SetOnClickScript("test"),点击按钮时框架会调用页面上的javascript方法: function test(ids,datas){}
ids是勾选的id数组,datas是勾选的所有字段数组

SetShowInRow(true)

按钮在每行的操作列上都显示

SetHideOnToolBar(true)

按钮不在列表上方显示

点击数据表格某列跳转URL(带弹窗)

this.MakeGridHeader(x => x.Name).SetFormat((a,b)=>{
                 string re = UIService.MakeDialogButton(ButtonTypesEnum.Link,$"/CURD/ReportForm/Details?ID={a.ID}&date={a.CurrentMonth}",a.Name ,800,null);
                //string re = $"<a href='/CURD/ReportForm/Details?ID={a.ID}&date={a.CurrentMonth}' target='_blank'>{a.Name }</a>";
                    return re;
                }),

猜你喜欢

转载自blog.csdn.net/sxy_student/article/details/104742639