コード例 #1
0
        public static void Init()
        {
           
            ActivitySubGridViewModel vm = new ActivitySubGridViewModel();

            // Add resize height event
            jQuery.Window.Resize(delegate(jQueryEvent e)
            {
                OnChangeHeight();
            });

            // Create Grid
            FetchQuerySettings config = vm.ViewConfig;
            GridDataViewBinder dataViewBinder = new GridDataViewBinder();
         
            Grid grid = dataViewBinder.DataBindXrmGrid(config.DataView, config.Columns, "gridcontainer", "gridpager", true, false);

           
            dataViewBinder.BindClickHandler(grid);
             
            // Data Bind
            ViewBase.RegisterViewModel(vm);
           
            Window.SetTimeout(delegate()
            {
                vm.Init();
                OnChangeHeight();
                grid.ResizeCanvas();
            }, 0);
        }
コード例 #2
0
        public static void Init()
        {
            PageEx.MajorVersion = 2013;

            jQuery.OnDocumentReady(delegate()
            {

                ValidationApi.RegisterExtenders();

                // Init settings
                OrganizationServiceProxy.GetUserSettings();
                SimpleEditableGridViewModel vm = new SimpleEditableGridViewModel();

                // Create Grid
                GridDataViewBinder dataViewBinder = new GridDataViewBinder();
                dataViewBinder.AddCheckBoxSelectColumn = true;
                dataViewBinder.SelectActiveRow = true;
                dataViewBinder.MultiSelect = false;
                List<Column> columns = new List<Column>();
                EditorFactory textEditor = (EditorFactory)Script.Literal("Slick.Editors.Text");

                XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Title", 300, "title"));
                XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Author", 300, "author"));

                dataViewBinder.DataBindXrmGrid(vm.Books, columns, "booksGridContainer", null, true, true);
                ViewBase.RegisterViewModel(vm);
            });
        }
コード例 #3
0
        public static void init()
        {
            MultiSearchViewModel2013 vm = new MultiSearchViewModel2013();
           

            // Create Grids
            FetchQuerySettings[] searches = vm.Config.GetItems();
            jQueryObject searchResultsDiv = jQuery.Select("#searchResults");
            jQuery.Window.Resize(delegate(jQueryEvent e)
            {
                OnResizeSearchResults(searchResultsDiv);
            });
            OnResizeSearchResults(searchResultsDiv);
            jQuery.Select(".sparkle-xrm").Bind("onmousewheel mousewheel DOMMouseScroll", OnSearchResultsMouseScroll);
            
            int i = 0;
            foreach (FetchQuerySettings config in searches)
            {
                
                

                List<Column> cardColumn = new List<Column>(new Column(ColumnProperties.Id, "card-column", ColumnProperties.Options,config.Columns, ColumnProperties.Name, "Name", ColumnProperties.Width, 290, ColumnProperties.CssClass, "card-column-cell"));
               
                cardColumn[0].Formatter = RenderCardColumnCell;
                cardColumn[0].DataType = "PrimaryNameLookup";
                config.Columns[0].DataType = "PrimaryNameLookup"; // This is so that clicking on the column opens the record
                GridDataViewBinder dataViewBinder = new GridDataViewBinder();
                GridOptions gridOptions = new GridOptions();
                gridOptions.EnableCellNavigation = true;
                gridOptions.AutoEdit = false;
                gridOptions.Editable = false;
                gridOptions.EnableAddRow = false;
                // Set height to the number of columns
                int columns = config.Columns.Count;             
                gridOptions.RowHeight = (columns>3? 3 : columns) * 16; ;
                if (gridOptions.RowHeight < 70) gridOptions.RowHeight = 70;
                gridOptions.HeaderRowHeight = 0;
                
                string gridId = "grid" + i.ToString() + "container";
                DataViewBase dataView = config.DataView;

                Grid grid = new Grid("#" + gridId, dataView, cardColumn, gridOptions);
                grids[i] = grid;
                AddResizeEventHandlers(grid, gridId);
                dataViewBinder.DataBindEvents(grid, dataView, gridId);
                dataViewBinder.BindClickHandler(grid);
                i++;

              
            
        
            }
           
            
            // Data Bind
            ViewBase.RegisterViewModel(vm);

        }
コード例 #4
0
        public static void init()
        {
            ContactsEditorViewModel vm = new ContactsEditorViewModel();

            OrganizationServiceProxy.GetUserSettings();
            // Data Bind Grid
            List<Column> columns = GridDataViewBinder.ParseLayout(",entityState,20,First Name,firstname,200,Last Name,lastname,200,Birth Date,birthdate,200,Account Role Code,accountrolecode,200,Number of Children,numberofchildren,100,Currency,transactioncurrencyid,200,Credit Limit,creditlimit,100,Gender,gendercode,100,Owner,ownerid,100");

            // Set Column formatters and editors
            columns[0].Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext)
            {
                EntityStates state = (EntityStates)value;
                return ((state == EntityStates.Changed) || (state == EntityStates.Created)) ? "<span class='grid-edit-indicator'></span>" : "";
            };

            // First Name Column
            XrmTextEditor.BindColumn(columns[1]);
          
            // Last Name Column
            XrmTextEditor.BindColumn(columns[2]);
            
            // Birth Date Column
            XrmDateEditor.BindColumn(columns[3], false);

            // Account Code Column
            XrmOptionSetEditor.BindColumn(columns[4], "contact", columns[4].Field, true);
           
            // Number of Children Column
            XrmNumberEditor.BindColumn(columns[5], 0, 100, 0);

            // Currency Column
            XrmLookupEditor.BindColumn(columns[6], vm.TransactionCurrencySearchCommand, "transactioncurrencyid", "currencyname", "");
         
            // Credit Limit Column
            XrmMoneyEditor.BindColumn(columns[7], -10000, 10000);

            // Another optionset
            XrmOptionSetEditor.BindColumn(columns[8], "contact", columns[8].Field, true);


            // OWner Column
            XrmLookupEditor.BindColumn(columns[9], vm.OwnerSearchCommand, "id", "name", "");

            // Create Grid
            GridDataViewBinder contactGridDataBinder = new GridDataViewBinder();
            Grid contactsGrid = contactGridDataBinder.DataBindXrmGrid(vm.Contacts, columns, "container", "pager",true,false);
            //contactGridDataBinder.BindClickHandler(contactsGrid);
            // Data Bind
            ViewBase.RegisterViewModel(vm);

            Window.SetTimeout(delegate()
            {
                vm.Init();
            }, 0);

        }
コード例 #5
0
ファイル: TreeView.cs プロジェクト: JamesHetfield/SparkleXrm
        public static void init()
        {
            TreeDataViewModel vm = new TreeDataViewModel();
            GridDataViewBinder binder = new GridDataViewBinder();

             List<Column> columns = new List<Column>(

                new Column(
                    ColumnProperties.Id, "status",
                    ColumnProperties.Name, "Status",
                    ColumnProperties.Field, "status",
                    ColumnProperties.Width, 70,
                    ColumnProperties.MinWidth, 50,
                    ColumnProperties.CssClass, "cell-title",
                    ColumnProperties.Sortable, true
                   ),
                 new Column(
                    ColumnProperties.Id, "project",
                    ColumnProperties.Name, "Project",
                    ColumnProperties.Field, "project",
                    ColumnProperties.Width, 70,
                    ColumnProperties.MinWidth, 50,
                    ColumnProperties.CssClass, "cell-title",
                    ColumnProperties.Sortable, true,
                    ColumnProperties.Editor, XrmTextEditor.TextEditor),
                   new Column(
                    ColumnProperties.Id, "date",
                    ColumnProperties.Name, "Date",
                    ColumnProperties.Field, "date",
                    ColumnProperties.Width, 70,
                    ColumnProperties.Sortable, true
                    ),
                new Column(
                    ColumnProperties.Id, "employee",
                    ColumnProperties.Name, "Employee",
                    ColumnProperties.Field, "employee",
                    ColumnProperties.Width, 80,
                    ColumnProperties.Sortable, true
                  ),
                new Column(
                    ColumnProperties.Id, "duration",
                    ColumnProperties.Name, "Duration",
                    ColumnProperties.Field, "duration",
                    ColumnProperties.MinWidth, 60,
                    ColumnProperties.Sortable, true)
               );

            vm.Items.OnGetItemMetaData += Items_OnGetItemMetaData;
            Grid grid = binder.DataBindXrmGrid(vm.Items,columns,"projectsGrid",null,true,false);
            grid.RegisterPlugin(new GroupGridRowPlugin());
            // Data Bind
            ViewBase.RegisterViewModel(vm);
        }
コード例 #6
0
        public static void Init()
        {

            PageEx.MajorVersion = 2013;

            jQuery.OnDocumentReady(delegate()
            {

                ValidationApi.RegisterExtenders();

                // Init settings
                OrganizationServiceProxy.GetUserSettings();
                SimpleEditableGridViewModel vm = new SimpleEditableGridViewModel();

                // Create Grid
                GridDataViewBinder dataViewBinder = new GridDataViewBinder();
                dataViewBinder.AddCheckBoxSelectColumn = true;
                dataViewBinder.SelectActiveRow = true;
                dataViewBinder.MultiSelect = false;
                List<Column> columns = new List<Column>();
                EditorFactory textEditor = (EditorFactory)Script.Literal("Slick.Editors.Text");

                XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Title", 150, "title"));
                XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Author", 150, "author"));
                XrmDateEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Published", 150, "publishdate"), true);
                XrmMoneyEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Price", 150, "price"), 0, 100);
                XrmNumberEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Copies", 150, "numberofcopies"), 0, 1000, 0);
                XrmLookupEditorOptions languageLookupOptions =
                    (XrmLookupEditorOptions)XrmLookupEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Language", 150, "language"), vm.GetLanguages, "id", "name", null).Options;
                languageLookupOptions.showImage = false;

                OptionSetBindingOptions formatBindingOptions = new OptionSetBindingOptions();
                formatBindingOptions.allowEmpty = true;
                formatBindingOptions.GetOptionSetsDelegate = vm.GetFormats;

                XrmOptionSetEditor.BindColumnWithOptions(GridDataViewBinder.AddColumn(columns, "Format", 150, "format"), formatBindingOptions);
                XrmDurationEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Audio Length", 150, "audiolength"));
                XrmTimeEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Start Time", 150, "starttime"));

                Grid grid = dataViewBinder.DataBindXrmGrid(vm.Books, columns, "booksGridContainer", null, true, true);
                ViewBase.RegisterViewModel(vm);

                Window.SetTimeout(delegate()
                {
                    vm.LoadBooks();
                    grid.ResizeCanvas();
                }, 0);
                
            });
        
        }
コード例 #7
0
        public static void init()
        {

            QuoteLineItemEditorViewModel vm = new QuoteLineItemEditorViewModel();

            List<Column> columns = new List<Column>();
            GridDataViewBinder.AddEditIndicatorColumn(columns);


            XrmNumberEditor.BindReadOnlyColumn(
                GridDataViewBinder.AddColumn(columns, "#", 40, "lineitemnumber"),
                0);

            XrmLookupEditor.BindColumn(
                GridDataViewBinder.AddColumn(columns, "Existing Product", 200, "productid"),
                vm.ProductSearchCommand, "productid", "name", "");

            XrmLookupEditor.BindColumn(
                GridDataViewBinder.AddColumn(columns, "Units", 100, "uomid"),
                vm.UoMSearchCommand, "uomid", "name", "");

            XrmTextEditor.BindColumn(
                GridDataViewBinder.AddColumn(columns, "Write-In Product", 200, "productdescription"));

            XrmMoneyEditor.BindColumn(
                GridDataViewBinder.AddColumn(columns, "Price Per Unit", 200, "priceperunit"),
                0,
                1000);

            XrmNumberEditor.BindColumn(
                GridDataViewBinder.AddColumn(columns, "Quantity", 200, "quantity"),
                0,
                1000,
                2);

            XrmMoneyEditor.BindReadOnlyColumn(
                GridDataViewBinder.AddColumn(columns, "Extended Amount", 100, "extendedamount"));


            GridDataViewBinder contactGridDataBinder = new GridDataViewBinder();
            Grid contactsGrid = contactGridDataBinder.DataBindXrmGrid(vm.Lines, columns, "quoteproductGrid", "quoteproductPager", true, true);
            contactGridDataBinder.BindCommitEdit(vm);

            ViewBase.RegisterViewModel(vm);
            Window.SetTimeout(delegate()
            {
                vm.Lines.Refresh();
            }, 0);

        }
コード例 #8
0
ファイル: ConnectionsView.cs プロジェクト: zeaba/SparkleXrm
        private static void InitLocalisedContent()
        {
            Dictionary<string, string> entityTypes;
            string id;
            string logicalName;

            #if DEBUG
            id = "C489707F-B5E2-E411-80D5-080027846324";
            logicalName = "account";
            entityTypes = new Dictionary<string, string>();
            entityTypes["account"] = "name";
            entityTypes["contact"] = "fullname";
            entityTypes["opportunity"] = "name";
            #else
            entityTypes = PageEx.GetWebResourceData(); // The allowed lookup types for the connections - e.g. account, contact, opportunity. This must be passed as a data parameter to the webresource 'account=name&contact=fullname&opportunity=name
            id = ParentPage.Data.Entity.GetId();
            logicalName =  ParentPage.Data.Entity.GetEntityName();
            #endif
            EntityReference parent = new EntityReference(new Guid(id), logicalName, null);
            vm = new ConnectionsViewModel(parent, entityTypes);
            // Bind Connections grid
            GridDataViewBinder contactGridDataBinder = new GridDataViewBinder();
            List<Column> columns = GridDataViewBinder.ParseLayout(String.Format("{0},record1id,250,{1},record1roleid,250", ResourceStrings.ConnectTo, ResourceStrings.Role));

            // Role2Id Column
            XrmLookupEditor.BindColumn(columns[1], vm.RoleSearchCommand, "connectionroleid", "name", "");

            connectionsGrid = contactGridDataBinder.DataBindXrmGrid(vm.Connections, columns, "container", "pager", true, false);

            connectionsGrid.OnActiveCellChanged.Subscribe(delegate(EventData e, object data)
            {
                OnCellChangedEventData eventData = (OnCellChangedEventData)data;
                vm.SelectedConnection.SetValue((Connection)connectionsGrid.GetDataItem(eventData.Row));
            });

            // Let's not use a hover button because it get's n the way of the editable grid!
            //RowHoverPlugin rowButtons = new RowHoverPlugin("gridButtons");
            //connectionsGrid.RegisterPlugin(rowButtons);

            ViewBase.RegisterViewModel(vm);

            OverrideMetadata();

            jQuery.Window.Resize(OnResize);
            jQuery.OnDocumentReady(delegate()
            {
                OnResize(null);
                vm.Search();
            });
        }
コード例 #9
0
ファイル: ConnectionsView.cs プロジェクト: walcivar/WebTEST
        public static void Init()
        {
            PageEx.MajorVersion = 2013; // Use the CRM2013/2015 styles
            vm = new ConnectionsViewModel();
            ViewBase.RegisterViewModel(vm);

            GridDataViewBinder connectionsDataBinder = new GridDataViewBinder();
            List<Column> columns = GridDataViewBinder.ParseLayout("Connect to, record1id,250,Role,record1roleid,250");
            XrmLookupEditor.BindColumn(columns[1], vm.RoleSearchCommand, "connectionroleid", "name", "");
            Grid connectionsGrid = connectionsDataBinder.DataBindXrmGrid(vm.Connections, columns, "container", "pager", true, false);

            ViewBase.RegisterViewModel(vm);
            jQuery.OnDocumentReady(delegate()
            {
                vm.Search();
            });
        }
コード例 #10
0
        public static void SetUpGrids(ScheduledJobsEditorViewModel vm)
        {
         
            // Create Scheduled Jobs Grid
            GridDataViewBinder jobsDataBinder = new GridDataViewBinder();

            List<Column> jobCols = GridDataViewBinder.ParseLayout("dev1_name,Name,300,dev1_recurrancepattern,Pattern,300,createdon,Created On, 300");
            jobsGrid = jobsDataBinder.DataBindXrmGrid(vm.JobsViewModel, jobCols, "jobsGrid", "jobsGridPager",false,false);

            GridDataViewBinder bulkDeleteDataBinder = new GridDataViewBinder();
            List<Column> bulkDeleteCols = GridDataViewBinder.ParseLayout("name,Name,300,asyncoperation_statuscode,Status,100,asyncoperation_postponeuntil,Next Run,150,asyncoperation_recurrencepattern,Pattern,150,createdon,Created On,150");
            bulkDeleteJobsGrid = bulkDeleteDataBinder.DataBindXrmGrid(vm.bulkDeleteJobsViewModel,bulkDeleteCols, "bulkDeleteJobGrid", "bulkDeleteJobGridPager",false, false);

            // Load first page
            vm.JobsViewModel.Refresh();


        }
コード例 #11
0
        public static void init()
        {
            ContactsEditorViewModel vm = new ContactsEditorViewModel();

            // Data Bind Grid
            List<Column> columns = GridDataViewBinder.ParseLayout("entityState,,20,firstname,First Name,200,lastname,Last Name,200,birthdate,Birth Date,200,accountrolecode,Account Role Code,200,numberofchildren,Number of Children,100,transactioncurrencyid,Currency,200,creditlimit,Credit Limit,100");

            // Set Column formatters and editors
            columns[0].Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext)
            {
                EntityStates state = (EntityStates)value;
                return ((state == EntityStates.Changed) || (state == EntityStates.Created)) ? "<span class='grid-edit-indicator'></span>" : "";
            };

            // First Name Column
            XrmTextEditor.BindColumn(columns[1]);

            // Last Name Column
            XrmTextEditor.BindColumn(columns[2]);

            // Birth Date Column
            XrmDateEditor.BindColumn(columns[3], false);

            // Account Code Column
            XrmOptionSetEditor.BindColumn(columns[4], "contact", columns[4].Field, true);

            // Number of Children Column
            XrmNumberEditor.BindColumn(columns[5], 0, 100, 0);

            // Currency Column
            XrmLookupEditor.BindColumn(columns[6], vm.TransactionCurrencySearchCommand, "transactioncurrencyid", "currencyname", "");

            // Credit Limit Column
            XrmMoneyEditor.BindColumn(columns[7], -10000, 10000);

            // Create Grid
            GridDataViewBinder contactGridDataBinder = new GridDataViewBinder();
            Grid contactsGrid = contactGridDataBinder.DataBindXrmGrid(vm.Contacts, columns, "container", "pager",true,false);

            // Data Bind
            ViewBase.RegisterViewModel(vm);
        }
コード例 #12
0
        /// <summary>
        /// Adds a column that shows the state of the row as edited/new
        /// </summary>
        /// <param name="columns"></param>
        public static void AddEditIndicatorColumn(List <Column> columns)
        {
            GridDataViewBinder.AddColumn(columns, "", 20, "entityState")
            .Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext)
            {
                EntityStates state = (EntityStates)value;
                switch (state)
                {
                case EntityStates.Created:
                case EntityStates.Changed:
                    return("<span class='grid-edit-indicator'></span>");

                case EntityStates.ReadOnly:
                    return("<span class='grid-readonly-indicator'></span>");

                default:
                    return("");
                }
            };
        }
コード例 #13
0
ファイル: MultiSearchView.cs プロジェクト: DeBiese/SparkleXrm
        public static void init()
        {
            MultiSearchViewModel vm = new MultiSearchViewModel();
            PageEx.MajorVersion = 2013;
            // Create Grids
            FetchQuerySettings[] searches = vm.Config.GetItems();

            int i = 0;
            foreach (FetchQuerySettings config in searches)
            {
                GridDataViewBinder dataViewBinder = new GridDataViewBinder();
                Grid grid = dataViewBinder.DataBindXrmGrid(config.DataView, config.Columns, "grid" + i.ToString() + "container", "grid" + i.ToString() + "pager", true, false);
                dataViewBinder.BindClickHandler(grid);
                i++;
            }

            // Data Bind
            ViewBase.RegisterViewModel(vm);

        }
コード例 #14
0
        /// <summary>
        /// Data Binds the standard Slick.DataView
        /// </summary>
        /// <param name="columns"></param>
        /// <param name="dataView"></param>
        /// <returns></returns>
        public Grid DataBindDataViewGrid(DataView dataView, List <Column> columns, string gridId, string pagerId, bool editable, bool allowAddNewRow)
        {
            // Always add an empty column on the end for reszing purposes
            ArrayEx.Add(columns, new Column());

            GridOptions gridOptions = new GridOptions();

            gridOptions.EnableCellNavigation = true;
            gridOptions.AutoEdit             = editable;
            gridOptions.Editable             = editable;
            gridOptions.EnableAddRow         = allowAddNewRow;

            // Set non-variable options
            gridOptions.RowHeight           = 20;
            gridOptions.HeaderRowHeight     = 25;
            gridOptions.EnableColumnReorder = false;

            CheckboxSelectColumn checkBoxSelector = null;

            if (AddCheckBoxSelectColumn)
            {
                CheckboxSelectColumnOptions checkboxOptions = new CheckboxSelectColumnOptions();
                checkboxOptions.cssClass = "sparkle-checkbox-column";
                // Add check box column
                checkBoxSelector = new CheckboxSelectColumn(checkboxOptions);
                Column checkBoxColumn = checkBoxSelector.GetColumnDefinition();
                columns.Insert(0, checkBoxColumn);
            }

            Grid grid = new Grid("#" + gridId, dataView, columns, gridOptions);

            grid.RegisterPlugin(checkBoxSelector);


            dataView.OnRowsChanged.Subscribe(delegate(EventData e, object a)
            {
                // Only invalided the rows that have changed
                OnRowsChangedEventArgs args = (OnRowsChangedEventArgs)a;
                if (args != null && args.Rows != null)
                {
                    grid.InvalidateRows(args.Rows);
                    grid.Render();
                }
            });


            //AddValidation(grid, dataView);


            // Add resize event
            jQuery.Window.Resize(delegate(jQueryEvent e)
            {
                // Set each column to be non resizable while we do the resize
                GridDataViewBinder.FreezeColumns(grid, true);
                grid.ResizeCanvas();
                // Restore the resizing
                GridDataViewBinder.FreezeColumns(grid, false);
            });

            // Add Reset binding
            Action reset = delegate() { };

            Script.Literal("{0}.reset={1}", dataView, reset);

            // Add Refresh button
            AddRefreshButton(gridId, (DataViewBase)(object)dataView);


            // Add Selection Model
            RowSelectionModelOptions selectionModelOptions = new RowSelectionModelOptions();

            selectionModelOptions.SelectActiveRow = true;
            RowSelectionModel selectionModel = new RowSelectionModel(selectionModelOptions);

            grid.SetSelectionModel(selectionModel);

            // Set sorting
            Action <EventData, object> onSort = delegate(EventData e, object a)
            {
                SortColData args = (SortColData)a;
                //SortDir = args.SortAsc ? 1 : -1;
                _sortColumnName = args.SortCol.Field;
                dataView.Sort(Comparer, args.SortAsc);
            };

            grid.OnSort.Subscribe(onSort);

            return(grid);
        }
コード例 #15
0
ファイル: TimeSheetView.cs プロジェクト: DeBiese/SparkleXrm
        public static void SetUpGrids(TimeSheetViewModel vm)
        {
           
            // Create Timesheet Grid
            DataViewBase daysDataView = vm.Days;

            List<Column> columns = new List<Column>();
            GridDataViewBinder.BindRowIcon(GridDataViewBinder.AddColumn(columns, "", 50, "icon"), "activity");
            XrmLookupEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Account", 300, "account"), vm.AccountSeachCommand, "accountid", "name", null);
            XrmLookupEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Regarding", 300, "regardingObjectId"), vm.RegardingObjectSearchCommand, "id", "displayName", null);
            XrmLookupEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Activity", 300, "activity"), vm.ActivitySearchCommand, "activityid", "subject", "activitytypecode");

            string[] daysOfWeek = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat","Sun","Mon","Tue","Wed","Thu","Fri","Sat" };
            int firstDayOfWeek = OrganizationServiceProxy.OrganizationSettings.WeekStartDayCode.Value.Value;

            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek], 50, "day0");
            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek + 1], 50, "day1");
            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek + 2], 50, "day2");
            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek + 3], 50, "day3");
            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek + 4], 50, "day4");
            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek + 5], 50, "day5");
            GridDataViewBinder.AddColumn(columns, daysOfWeek[firstDayOfWeek + 6], 50, "day6");

            GridDataViewBinder daysDataBinder = new GridDataViewBinder();
            daysDataBinder.SelectActiveRow = true;
            daysDataBinder.AddCheckBoxSelectColumn = false;
            daysGrid = daysDataBinder.DataBindXrmGrid(daysDataView, columns, "timesheetGridContainer", null, true, true);

            // Set the totals row meta data
            daysDataView.OnGetItemMetaData += delegate(object item)
            {
                ItemMetaData metaData = new ItemMetaData();
                DayEntry day = (DayEntry)item;
                if (day != null && day.isTotalRow)
                {

                    metaData.Editor = delegate(EditorArguments args) { return null; };
                    metaData.Columns = new Dictionary<object, Column>();
                    metaData.Columns["Account"] = new Column("editor", null);
                    metaData.Columns["Regarding"] = new Column("editor", null);
                    metaData.Columns["Activity"] = new Column("editor", null);
                    metaData.Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext)
                    {
                        switch (columnDef.Field)
                        {
                            case "account":
                            case "regardingObjectId":
                                return "";
                            case "activity":
                                return "Total";
                            default:
                                return XrmDurationEditor.Formatter(row, cell, value, columnDef, dataContext);
                        }
                       
                    };
                           
                    metaData.CssClasses = "days_total_row";
                   
                }

                else
                {
                    metaData.Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext)
                    {
                        switch (columnDef.Field)
                        {
                            case "account":
                            case "regardingObjectId":
                            case "activity":
                                return XrmLookupEditor.Formatter(row, cell, value, columnDef, dataContext);
                            default:
                                return XrmDurationEditor.Formatter(row, cell, value, columnDef, dataContext);
                        }
                    };

                }

                return metaData;
            };
          
            daysDataBinder.DataBindSelectionModel(daysGrid, daysDataView);


            // ---------------------------------------
            // Sessions Grid
            // ---------------------------------------
            DataViewBase sessionsDataView = vm.SessionDataView;

            List<Column> sessionGridCols = new List<Column>();

            GridDataViewBinder.AddEditIndicatorColumn(sessionGridCols);

            XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Activity", 300, "activitypointer_subject")).Editor = null;

           

            XrmDateEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Date", 100, "dev1_starttime"), true);

            XrmTimeEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Start", 100, "dev1_starttime")).Validator =
                delegate(object value, object item)
                {
                    dev1_session session = (dev1_session)item;
                    DateTime newStartTime = (DateTime)value;
                    ValidationResult result = new ValidationResult();

                    if (session.dev1_EndTime != null)
                    {

                        result.Valid = true;
                        string valueText = (string)value;
                        // Check if the end time is before the start time

                        bool isValid = DateTimeEx.GetTimeDuration(newStartTime) < DateTimeEx.GetTimeDuration(session.dev1_EndTime);

                        result.Valid = isValid;
                        result.Message = "The start time must be before the end time";

                    }
                    else
                        result.Valid = true;
                    return result;


                };

            XrmTimeEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "End", 100, "dev1_endtime")).Validator =
                delegate(object value, object item)
                {
                    dev1_session session = (dev1_session)item;
                    DateTime newEndTime = (DateTime)value;

                    ValidationResult result = new ValidationResult();

                    if (session.dev1_StartTime != null)
                    {
                        result.Valid = true;
                        string valueText = (string)value;
                        // Check if the end time is before the start time

                        bool isValid = DateTimeEx.GetTimeDuration(session.dev1_StartTime) < DateTimeEx.GetTimeDuration(newEndTime);

                        result.Valid = isValid;
                        result.Message = "The end time must be after the start time";
                    }
                    else
                        result.Valid = true;

                    return result;

                };


            XrmDurationEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Duration", 70, "dev1_duration"));
            XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Description", 300, "dev1_description"));


            GridDataViewBinder sessionsDataBinder = new GridDataViewBinder();
            sessionsDataBinder.SelectActiveRow = false;
            sessionsDataBinder.AddCheckBoxSelectColumn = true;

            sessionsGrid = sessionsDataBinder.DataBindXrmGrid(sessionsDataView, sessionGridCols, "sessionsGridContainer", null, true, true);
            
            sessionsGrid.OnBeforeEditCell.Subscribe(delegate(EventData e, object args)
            {
             
                // Stop the row from being edited if locked
                Entity item = (Entity)((EditEventData)args).item;
                bool result = sessionsDataView.OnBeforeEdit(item);
                Script.Literal("return {0}", result);
                

            });

            daysGrid.OnActiveCellChanged.Subscribe(delegate(EventData e, object args)
            {
                CellSelection activeCell = daysGrid.GetActiveCell();
                if (activeCell != null)
                {
                    if (activeCell.Cell < StartDaysColumnIndex)
                    {
                        // Whole activity is selected
                        vm.Days.SelectedDay = null;

                    }
                    else
                    {
                        vm.Days.SelectedDay = activeCell.Cell - (StartDaysColumnIndex-1);

                    }
                }
            });




        }
コード例 #16
0
ファイル: ConnectionsView.cs プロジェクト: DeBiese/SparkleXrm
        private static void InitLocalisedContent()
        {
            
            Dictionary<string, string> parameters;
            string id;
            string logicalName;
            int pageSize = 10;
            string defaultView=null;            

#if DEBUG
            id = "C489707F-B5E2-E411-80D5-080027846324";
            logicalName = "account";
            parameters = new Dictionary<string, string>();         
           
#else
            parameters = PageEx.GetWebResourceData(); // The allowed lookup types for the connections - e.g. account, contact, opportunity. This must be passed as a data parameter to the webresource 'account=name&contact=fullname&opportunity=name
            id = ParentPage.Data.Entity.GetId();  
            logicalName =  ParentPage.Data.Entity.GetEntityName();
            ParentPage.Data.Entity.AddOnSave(CheckForSaved);
#endif
            EntityReference parent = new EntityReference(new Guid(id), logicalName, null);
            string entities = "account,contact,opportunity,systemuser";
            foreach (string key in parameters.Keys)
            {
                switch (key.ToLowerCase())
                {
                    case "entities":
                        entities = parameters[key];
                        break;
                    case "pageSize":
                        pageSize = int.Parse(parameters[key]);
                        break;
                    case "view":
                        defaultView = parameters[key];
                        break;
                    case "category":
                        category = int.Parse(parameters[key]);
                        break;
                }
            }
           
            // Get the view
            QueryParser queryParser = new QueryParser(new string[] {"connection"});
            queryParser.GetView("connection", defaultView);
            queryParser.QueryMetadata();
            EntityQuery connectionViews = queryParser.EntityLookup["connection"];
            string viewName = connectionViews.Views.Keys[0];
            FetchQuerySettings view = connectionViews.Views[viewName];

            vm = new ConnectionsViewModel(parent, entities.Split(","), pageSize, view);
            
            // Bind Connections grid
            GridDataViewBinder connectionsGridDataBinder = new GridDataViewBinder();
            List<Column> columns = view.Columns;

            // Role2Id Column - provided it is in the view!
            foreach (Column col in columns)
            {
                switch (col.Field)
                {
                    case "record2roleid":
                        XrmLookupEditor.BindColumn(col, vm.RoleSearchCommand, "connectionroleid", "name,category", "");
                        break;
                    case "description":
                        XrmTextEditor.BindColumn(col);
                        break;
                    case "effectivestart":
                    case "effectiveend":
                        XrmDateEditor.BindColumn(col, true);
                        break;
                }
            }
           

            connectionsGrid = connectionsGridDataBinder.DataBindXrmGrid(vm.Connections, columns, "container", "pager", true, false);

            connectionsGrid.OnActiveCellChanged.Subscribe(delegate(EventData e, object data)
            {
                OnCellChangedEventData eventData = (OnCellChangedEventData)data;
                vm.SelectedConnection.SetValue((Connection)connectionsGrid.GetDataItem(eventData.Row));
            });

            connectionsGridDataBinder.BindClickHandler(connectionsGrid);
            // Let's not use a hover button because it get's in the way of the editable grid!
            //RowHoverPlugin rowButtons = new RowHoverPlugin("gridButtons");
            //connectionsGrid.RegisterPlugin(rowButtons);

            ViewBase.RegisterViewModel(vm);

            OverrideMetadata();

            jQuery.Window.Resize(OnResize);
            jQuery.OnDocumentReady(delegate()
            {
                OnResize(null);
                vm.Search();
            });
        }
コード例 #17
0
        public static void init()
        {
            DataGroupingViewModel vm = new DataGroupingViewModel();
            NumberFormatInfo numberFormatInfo = NumberEx.GetNumberFormatInfo();
            numberFormatInfo.MinValue = 0;
            numberFormatInfo.MaxValue = 1000;
            numberFormatInfo.Precision = 2;
            BooleanBindingOptions boolFormatInfo = new BooleanBindingOptions();
            boolFormatInfo.FalseOptionDisplayName = "No";
            boolFormatInfo.TrueOptionDisplayName = "Yes";

            // Add Columns
            SubTotalsFormatterDelegate sumTotalsFormatterDelegate = SumTotalsFormatter;
            SubTotalsFormatterDelegate avgTotalsFormatterDelegate = AvgTotalsFormatter;
            FormatterDelegate percentageFormatter = XrmNumberEditor.Formatter;
            FormatterDelegate checkboxFormatter = XrmBooleanEditor.Formatter;

            List<Column> columns = new List<Column>(
                new Column(
                    ColumnProperties.Id, "sel",
                    ColumnProperties.Name, "#",
                    ColumnProperties.Field, "num",
                    ColumnProperties.CssClass, "cell-selection",
                    ColumnProperties.Width, 40,
                    ColumnProperties.Resizable, false,
                    ColumnProperties.Selectable, false,
                    ColumnProperties.Focusable, false),
                new Column(
                    ColumnProperties.Id, "title",
                    ColumnProperties.Name, "Title",
                    ColumnProperties.Field, "title",
                    ColumnProperties.Width, 70,
                    ColumnProperties.MinWidth, 50,
                    ColumnProperties.CssClass, "cell-title",
                    ColumnProperties.Sortable, true,
                    ColumnProperties.Editor, XrmTextEditor.TextEditor),
                   new Column(
                    ColumnProperties.Id, "duration",
                    ColumnProperties.Name, "Duration",
                    ColumnProperties.Field, "duration",
                    ColumnProperties.Width, 70,
                    ColumnProperties.Sortable, true,
                    ColumnProperties.GroupTotalsFormatter, sumTotalsFormatterDelegate),
                new Column(
                    ColumnProperties.Id, "%",
                    ColumnProperties.Name, "% Complete",
                    ColumnProperties.Field, "percentComplete",
                    ColumnProperties.Width, 80,
                    ColumnProperties.Formatter, percentageFormatter,
                    ColumnProperties.Options, numberFormatInfo,
                    ColumnProperties.Sortable, true,
                    ColumnProperties.GroupTotalsFormatter, avgTotalsFormatterDelegate),
                new Column(
                    ColumnProperties.Id, "start",
                    ColumnProperties.Name, "Start",
                    ColumnProperties.Field, "start",
                    ColumnProperties.MinWidth, 60,
                    ColumnProperties.Sortable, true),
                new Column(
                    ColumnProperties.Id, "finish",
                    ColumnProperties.Name, "Finish",
                    ColumnProperties.Field, "finish",
                    ColumnProperties.MinWidth, 60,
                    ColumnProperties.Sortable, true),
                new Column(
                    ColumnProperties.Id, "cost",
                    ColumnProperties.Name, "Cost",
                    ColumnProperties.Field, "cost",
                    ColumnProperties.Width, 90,
                    ColumnProperties.Sortable, true,
                    ColumnProperties.GroupTotalsFormatter, sumTotalsFormatterDelegate),
                new Column(
                    ColumnProperties.Id, "effort-driven",
                    ColumnProperties.Name, "Effort Driven",
                    ColumnProperties.Width, 80,
                    ColumnProperties.MinWidth, 20,
                    ColumnProperties.CssClass, "cell-effort-driven",
                    ColumnProperties.Field, "effortDriven",
                    ColumnProperties.Formatter, checkboxFormatter,
                    ColumnProperties.Options, boolFormatInfo,
                    ColumnProperties.Sortable, true)
               );

            GridOptions options = new GridOptions();

            options.EnableCellNavigation = true;
            options.Editable = true;
            DataViewBase view = (DataViewBase)(object)vm.Projects;

            GridDataViewBinder binder = new GridDataViewBinder();
            Grid grid = binder.DataBindDataViewGrid(vm.Projects, columns, "myGrid", null, true, false);

            // register the group item metadata provider to add expand/collapse group handlers
            grid.RegisterPlugin(new GroupItemMetadataProvider());
            
            // Data Bind
            ViewBase.RegisterViewModel(vm);
        }
コード例 #18
0
        public static void SetUpGrids(TimeSheetViewModel vm)
        {
            GridOptions daysGridOpts = new GridOptions();
            daysGridOpts.EnableCellNavigation = true;
            daysGridOpts.EnableColumnReorder = false;
            daysGridOpts.AutoEdit = false;
            daysGridOpts.Editable = true;
            daysGridOpts.RowHeight = 20;
            daysGridOpts.HeaderRowHeight = 25;
            daysGridOpts.ForceFitColumns = false;
            daysGridOpts.EnableAddRow = true;

            // Create Timesheet Grid
            DataViewBase daysDataView = vm.Days;

            List<Column> columns = new List<Column>();
            GridDataViewBinder.BindRowIcon(GridDataViewBinder.AddColumn(columns, "", 50, "icon"), "activity");
            XrmLookupEditor.BindColumn(GridDataViewBinder.AddColumn(columns, "Activity", 300, "activity"), vm.ActivitySearchCommand, "activityid", "subject", "activitytypecode");

            GridDataViewBinder.AddColumn(columns, "Mon", 50, "day0");
            GridDataViewBinder.AddColumn(columns, "Tue", 50, "day1");
            GridDataViewBinder.AddColumn(columns, "Wed", 50, "day2");
            GridDataViewBinder.AddColumn(columns, "Thu", 50, "day3");
            GridDataViewBinder.AddColumn(columns, "Fri", 50, "day4");
            GridDataViewBinder.AddColumn(columns, "Sat", 50, "day5");
            GridDataViewBinder.AddColumn(columns, "Sun", 50, "day6");

            daysGrid = new Grid("#timesheetGridContainer", daysDataView, columns, daysGridOpts);

            GridDataViewBinder daysDataBinder = new GridDataViewBinder();
            daysDataBinder.DataBindEvents(daysGrid, daysDataView, "timesheetGridContainer");

            // Set the totals row meta data
            daysDataView.OnGetItemMetaData += delegate(object item)
            {
                DayEntry day = (DayEntry)item;
                if (day != null && day.isTotalRow)
                {
                    ItemMetaData metaData = new ItemMetaData();
                    metaData.Editor = null;
                    metaData.Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext)
                    {
                        if (columnDef.Field == "activity")
                            return "Total";
                        else
                            return Formatters.DefaultFormatter(row, cell, value, columnDef, dataContext);
                    };
                    metaData.CssClasses = "days_total_row";
                    return metaData;
                }

                else
                    return null;
            };

            daysDataBinder.DataBindSelectionModel(daysGrid, daysDataView);

            // ---------------------------------------
            // Sessions Grid
            // ---------------------------------------
            DataViewBase sessionsDataView = vm.SessionDataView;

            List<Column> sessionGridCols = new List<Column>();

            GridDataViewBinder.AddEditIndicatorColumn(sessionGridCols);

            XrmTextEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Description", 200, "dev1_description"));

            XrmDateEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Date", 200, "dev1_starttime"), true);

            XrmTimeEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Start", 100, "dev1_starttime")).Validator =
                delegate(object value, object item)
                {
                    dev1_session session = (dev1_session)item;
                    DateTime newStartTime = (DateTime)value;
                    ValidationResult result = new ValidationResult();

                    if (session.dev1_EndTime != null)
                    {

                        result.Valid = true;
                        string valueText = (string)value;
                        // Check if the end time is before the start time

                        bool isValid = DateTimeEx.GetTimeDuration(newStartTime) < DateTimeEx.GetTimeDuration(session.dev1_EndTime);

                        result.Valid = isValid;
                        result.Message = "The start time must be before the end time";

                    }
                    else
                        result.Valid = true;
                    return result;

                };

            XrmTimeEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "End", 100, "dev1_endtime")).Validator =
                delegate(object value, object item)
                {
                    dev1_session session = (dev1_session)item;
                    DateTime newEndTime = (DateTime)value;

                    ValidationResult result = new ValidationResult();

                    if (session.dev1_StartTime != null)
                    {
                        result.Valid = true;
                        string valueText = (string)value;
                        // Check if the end time is before the start time

                        bool isValid = DateTimeEx.GetTimeDuration(session.dev1_StartTime) < DateTimeEx.GetTimeDuration(newEndTime);

                        result.Valid = isValid;
                        result.Message = "The end time must be after the start time";
                    }
                    else
                        result.Valid = true;

                    return result;

                };

            XrmDurationEditor.BindColumn(GridDataViewBinder.AddColumn(sessionGridCols, "Duration", 200, "dev1_duration"));

            GridDataViewBinder sessionsDataBinder = new GridDataViewBinder();
            sessionsGrid = sessionsDataBinder.DataBindXrmGrid(sessionsDataView, sessionGridCols, "sessionsGridContainer", null, true, true);
            sessionsDataBinder.DataBindSelectionModel(sessionsGrid, sessionsDataView);

            daysGrid.OnActiveCellChanged.Subscribe(delegate(EventData e, object args)
            {
                CellSelection activeCell = daysGrid.GetActiveCell();
                if (activeCell != null)
                {
                    if (activeCell.Cell < 2)
                    {
                        // Whole activity is selected
                        vm.Days.SelectedDay = null;

                    }
                    else
                    {
                        vm.Days.SelectedDay = activeCell.Cell - 1;

                    }
                }
            });
        }