public static SlickFormatter TreeToggle <TEntity>(Func <SlickRemoteView <TEntity> > getView, Func <TEntity, object> getId,
                                                          SlickFormatter formatter)
        {
            return(delegate(SlickFormatterContext ctx)
            {
                var text = formatter(ctx);
                var view = getView();
                var indent = (((object)ctx.Item._indent).As <Int32?>() ?? 0);
                var spacer = "<span class=\"s-TreeIndent\" style=\"width:" + (15 * (indent)) + "px\"></span>";
                var id = getId(((object)ctx.Item).As <TEntity>());
                var idx = view.GetIdxById(id);
                var next = view.GetItemByIdx(idx.Value + 1);

                if (next != null)
                {
                    var nextIndent = ((object)(((dynamic)next)._indent)).As <Int32?>() ?? 0;
                    if (nextIndent > indent)
                    {
                        if (Q.IsTrue(ctx.Item._collapsed))
                        {
                            return spacer + "<span class=\"s-TreeToggle s-TreeExpand\"></span>" + text;
                        }
                        else
                        {
                            return spacer + "<span class=\"s-TreeToggle s-TreeCollapse\"></span>" + text;
                        }
                    }
                }

                return spacer + "<span class=\"s-TreeToggle\"></span>" + text;
            });
        }
Пример #2
0
     public static SlickColumnFormatter ConvertToFormatter(SlickFormatter format)
     {
         if (format == null)
         {
             return(null);
         }
         else
         {
             return (row, cell, value, column, item) =>
                    {
                        return format(new SlickFormatterContext
                 {
                     Row    = row,
                     Cell   = cell,
                     Value  = value,
                     Column = column,
                     Item   = item
                 });
                    }
         };
     }
 }