Partager via


Getting all values from a Choice field in SharePoint 2010 using CSOM

I recently ran into an issue where I needed to get possible values for a SharePoint 2010 choice column.  Thought I would share the code in case anyone else runs across this need.  This code uses the ECMAScript Client-Side Object Model. 

 
//Variable to hold the value once returned from SharePoint client.svc
    var distinctChoices = [],
        // Function to return all of the choices from the Choice column passed in
        getUniqueColumnValuesFromChoice = function (columnName) {
            var ctx = new SP.ClientContext.get_current();
            var web = ctx.get_web();
            var list = web.get_lists().getByTitle('Radio Database');
            var field = list.get_fields().getByInternalNameOrTitle(columnName);
            var choiceField = ctx.castTo(field, SP.FieldChoice);

            ctx.load(field);
            /* Call executeQueryAsync and pass in success and failure 
                anonymous functions */
            ctx.executeQueryAsync(function () {
                // Return array of all of the choices in the choice field
                distinctChoices = choiceField.get_choices();
                /* Since call is asynchronous, call function to interact 
                with the choices */
                onFieldLoaded();
            },
            // This will be called when executeQueryAsync fails
            function (sender, args) {
                console.log(args);
            });
        };

    function onFieldLoaded() {
        // Not called until choices are loaded into distonctChoices array
    };