Cloning DataSource for multiple reads

2 posts, 0 answers
  1. Dr.YSG
    Dr.YSG avatar
    210 posts
    Member since:
    Dec 2009

    Posted 03 May 2012 Link to this post

    I have a clone function (shown below) for deep copying of objects. How could I clone a datasource object (like the one below) and then change the url and then re-use it for multiple Grids?

    dataSource = new kendo.data.DataSource({
        type:"json",
        transport:{
            read:{
                dataType:"json"
            }
        },
        schema:{
            data:"results",
            total:"count"
        },
        error:function (e) {
            alert("fetch types error happened: " + e);
        }
    });

    datasource2 = clone(datasource);
    datasource2.transport.read.url = "http://anotherSite";  // will not work, but this is the idea

    here is my clone function:

    function clone(obj) {
        var copy;
        // Handle the 3 simple types, and null or undefined
        if (null == obj || "object" != typeof obj) {
            return obj;
        }
        // Handle Date
        if (obj instanceof Date) {
            copy = new Date();
            copy.setTime(obj.getTime());
            return copy;
        }
        // Handle Array
        if (obj instanceof Array) {
            copy = [];
            var i;
            var len = obj.length;
            for (i = 0; i < len; ++i) {
                copy[i] = clone(obj[i]);
            }
            return copy;
        }
        // Handle Object
        if (obj instanceof Object) {
            copy = {};
            for (var attr in obj) {
                if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
            }
            return copy;
        }
        throw new Error("Unable to copy obj! Its type isn't supported.");
    }

  2. Dr.YSG
    Dr.YSG avatar
    210 posts
    Member since:
    Dec 2009

    Posted 04 May 2012 Link to this post

    Overnight, I realized that I had "brain freeze".

    What I should be doing is created a javascript object that provides a "template" for creating a datasource, then cloning it with Jquery.extend and replacing the url for each use.

    So I am closing this line of discussion.
  3. Kendo UI is VS 2017 Ready
Back to Top