Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Greg Lee 5 posts 25 karma points
    Mar 10, 2015 @ 17:34
    Greg Lee
    0

    Custom Property in Editor, using AngularJS and C#, cannot save node

    I have a quick question. I've created a custom drop-down HTML control that dynamically grabs "nodes" from a database. I turned this into an Umbraco (v7) datatype that can be used as an Umbraco property in the admin section.

    Unfortunately, when the user picks one of the items and saves, it does not properly store this info. I've determined that this is because when Umbraco tries to save to the DB, it's NodeId is empty. I need to populate this before we save the data. Unfortunately, I haven't found any easy way to do this.

    Can anyone point me in the right direction? Populating the NodeId before I push the model to the CS Controller (which should update the SQL DB) should work... or is it possible to make an angularJS that pushes TWO parameters and let the C# handle this?

    Anyone have any ideas? Thanks in advanced.

    Here's the HTML Editor:

        <select ng-controller="Dmns.DDLAllNodesController" data-ng-model="selectedOption">
            <option ng-repeat="gNode in galaxyNodes.data" value="{{gNode}}">
                {{gNode.KioskNodeId}} -- {{gNode.MachineName}} 
            </option>
        </select>

    And here's the AngularJS, where I'd like to add the Umbraco's Node Id to the model before submitting to the C#

         $scope.$on("formSubmitting", function () {
                $scope.selectedOption({
                    Id: $routeParams.Id // This does not update properly
                });
                $scope.$apply();
                getAllNodesResource.save($scope.selectedOption); // Sends old data
            });

    And here's the model I'm returning, in case this helps:

    [Serializable]
        [DataContract]
        public class KioskNode
        {
            [DataMember]
            public int Id { get; set; }
    
            [DataMember]
            public int NodeId { get; set; }
    
            [DataMember]
            public int KioskNodeId { get; set; }
    
            [DataMember]
            public string MachineName { get; set; }
        }
  • Greg Lee 5 posts 25 karma points
    Mar 10, 2015 @ 22:08
    Greg Lee
    0

    So I found the reason why it wasn't populating correctly.  I wasn't deserialing the object from JSON, which means I couldn't get the child properties.

     

    This fixed my problem:

    var deJson = angular.fromJson(node);

            return $http.post("/umbraco/backoffice/api/DDLNodes/PostSave", {

                Id: 0,

                NodeId: id,

                KioskNodeId: deJson.KioskNodeId,

                MachineName: deJson.MachineName

            });

     

    This let me pass the variables (updated) I need back to Backoffice to save it to the DB.

Please Sign in or register to post replies

Write your reply to:

Draft