Telerik Forums
UI for ASP.NET AJAX Forum
19 answers
840 views
It would be great if you update the demo at http://demos.telerik.com/aspnet-ajax/grid/examples/data-editing/batch-editing/defaultcs.aspx with a possibility to remove the new rows. Currently, the only way to do it is to cancel all updates.
Pavlina
Telerik team
 answered on 16 Dec 2014
1 answer
778 views
I'm attempting to create a wizard with an unknowable number of steps and outcomes.  Steps are being created dynamically in code-behind based on user responses. I'm able to retrieve data from the wizard at completion and render my results correctly.  If a user walks through the wizard in a linear way everything functions, but when users step back through the wizard via the previous button I need to trap this condition to prevent logic from re-running and creating duplicates of steps that already exist.

My question is - is there any absolute way to reference a particular step (i.e. step.ID) so I can check to see what step a user is leaving and what step a user is heading to? CurrentStepIndex is not usable since a user can arrive at a step from many different logical paths.
Plamen
Telerik team
 answered on 16 Dec 2014
0 answers
126 views
I am having an issue with the RadTreeView control where it scrolls to the selected node unexpectedly.  See attached code:

<%@ Page Language="vb" AutoEventWireup="false" %>
 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
 
<!DOCTYPE html>
 
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <telerik:RadAjaxLoadingPanel ID="EntityTreeLoading"
            runat="server"
            Transparency="0" BackColor="#CCCCFF" Wrap="False" HorizontalAlign="Center">
        </telerik:RadAjaxLoadingPanel>
        <telerik:RadScriptBlock ID="EntityTreeScriptBlock" runat="server">
            <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
            <script type="text/javascript">
                //<![CDATA[
                GLMDictionary = function(levels) {
                    var lvl;
                    var _levels = levels; // the number of levels of lookup in the dictionary
                    var _dictionary = [];
                    var that = this;
                    this._isArray = function(obj) {
                        return obj.constructor == Array;
                    };
                    this.clear = function() {
                        _dictionary = [];
                    };
                    this.get_levels = function() {
                        return _levels;
                    };
                    this.get_entry = function() {
                        if (arguments.length < this.get_levels() || arguments.length > that.get_levels()) {
                            throw 'Invalid number of arguments, dictionary requires ' + that.get_levels() + ' keys';
                        }
                        var associativeArray = _dictionary;
                        for (lvl = 0; lvl < arguments.length; lvl++) {
                            if (lvl < this.get_levels()) {
                                associativeArray = associativeArray[arguments[lvl]];
                                if (!associativeArray) {
                                    return null;
                                }
                            }
                        }
                        if (associativeArray === undefined) {
                            return null; // cleanup undefined
                        }
                        return associativeArray;
                    };
                    this.set_entry = function() {
                        if (arguments.length < this.get_levels() + 1 || arguments.length > that.get_levels() + 1) {
                            throw 'Invalid number of arguments, dictionary requires ' + that.get_levels() + ' keys and one value';
                        }
                        var associativeArray = _dictionary; // seed the array
                        for (lvl = 0; lvl < arguments.length; lvl++) {
                            if (lvl < this.get_levels() - 1) {
                                if (!associativeArray[arguments[lvl]]) {
                                    associativeArray[arguments[lvl]] = [];
                                }
                                associativeArray = associativeArray[arguments[lvl]]; // goto the inner arrray
                            }
                        }
                        associativeArray[arguments[that.get_levels() - 1]] = arguments[this.get_levels()]; // set the actual value
                    };
                    return this;
                };
 
                var json_nodes = JSON.parse('[{"ID":"1","PK":"1000015","value":"NodeType=Entity:Self,EntityObjectPK =1000015","name":"_test, bag 5,<br />Individual","tooltip":"1, 4, 1000015","cssClass":"SubHeadingClass","image":"/UI/private/images/individual.jpg","Nodes":[{"ID":"0","PK":"Correspondence","value":"","name":"Correspondence","tooltip":"Correspondence","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"7","PK":"28","value":"NodeType=Object:19117782,ObjectID=7,ObjectPK=28,EntityObjectPK=1000015","name":"New Test Corr","tooltip":"7, 10007, 28","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"1097","value":"NodeType=Object:19117783,ObjectID=22,ObjectPK=1097,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 1097","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"26","value":"NodeType=Object:19114378,ObjectID=7,ObjectPK=26,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 26","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"28","value":"NodeType=Object:19114379,ObjectID=22,ObjectPK=28,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 28","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"25","value":"NodeType=Object:19114376,ObjectID=7,ObjectPK=25,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 25","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"27","value":"NodeType=Object:19114377,ObjectID=22,ObjectPK=27,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 27","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"24","value":"NodeType=Object:19114374,ObjectID=7,ObjectPK=24,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 24","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"26","value":"NodeType=Object:19114375,ObjectID=22,ObjectPK=26,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 26","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"23","value":"NodeType=Object:19114372,ObjectID=7,ObjectPK=23,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 23","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"25","value":"NodeType=Object:19114373,ObjectID=22,ObjectPK=25,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 25","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"22","value":"NodeType=Object:19114370,ObjectID=7,ObjectPK=22,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 22","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"24","value":"NodeType=Object:19114371,ObjectID=22,ObjectPK=24,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 24","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"21","value":"NodeType=Object:19114368,ObjectID=7,ObjectPK=21,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 21","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"23","value":"NodeType=Object:19114369,ObjectID=22,ObjectPK=23,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 23","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"20","value":"NodeType=Object:19114366,ObjectID=7,ObjectPK=20,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 20","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"22","value":"NodeType=Object:19114367,ObjectID=22,ObjectPK=22,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 22","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"19","value":"NodeType=Object:19114364,ObjectID=7,ObjectPK=19,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 19","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"21","value":"NodeType=Object:19114365,ObjectID=22,ObjectPK=21,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 21","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"18","value":"NodeType=Object:19114362,ObjectID=7,ObjectPK=18,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 18","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"20","value":"NodeType=Object:19114363,ObjectID=22,ObjectPK=20,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 20","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"17","value":"NodeType=Object:19114360,ObjectID=7,ObjectPK=17,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 17","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"19","value":"NodeType=Object:19114361,ObjectID=22,ObjectPK=19,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 19","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"16","value":"NodeType=Object:19114358,ObjectID=7,ObjectPK=16,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 16","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"18","value":"NodeType=Object:19114359,ObjectID=22,ObjectPK=18,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 18","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"15","value":"NodeType=Object:19114356,ObjectID=7,ObjectPK=15,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 15","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"17","value":"NodeType=Object:19114357,ObjectID=22,ObjectPK=17,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 17","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"14","value":"NodeType=Object:19114354,ObjectID=7,ObjectPK=14,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 14","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"16","value":"NodeType=Object:19114355,ObjectID=22,ObjectPK=16,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 16","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"13","value":"NodeType=Object:19114352,ObjectID=7,ObjectPK=13,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 13","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"15","value":"NodeType=Object:19114353,ObjectID=22,ObjectPK=15,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 15","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"12","value":"NodeType=Object:19114350,ObjectID=7,ObjectPK=12,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 12","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"14","value":"NodeType=Object:19114351,ObjectID=22,ObjectPK=14,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 14","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"11","value":"NodeType=Object:19114348,ObjectID=7,ObjectPK=11,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 11","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"13","value":"NodeType=Object:19114349,ObjectID=22,ObjectPK=13,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 13","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"10","value":"NodeType=Object:19114346,ObjectID=7,ObjectPK=10,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 10","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"12","value":"NodeType=Object:19114347,ObjectID=22,ObjectPK=12,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 12","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"9","value":"NodeType=Object:19114344,ObjectID=7,ObjectPK=9,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 9","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"11","value":"NodeType=Object:19114345,ObjectID=22,ObjectPK=11,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 11","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"8","value":"NodeType=Object:19114342,ObjectID=7,ObjectPK=8,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 8","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"10","value":"NodeType=Object:19114343,ObjectID=22,ObjectPK=10,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 10","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"7","value":"NodeType=Object:19114340,ObjectID=7,ObjectPK=7,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 7","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"9","value":"NodeType=Object:19114341,ObjectID=22,ObjectPK=9,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 9","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"6","value":"NodeType=Object:19114338,ObjectID=7,ObjectPK=6,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 6","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"8","value":"NodeType=Object:19114339,ObjectID=22,ObjectPK=8,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 8","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"5","value":"NodeType=Object:19114336,ObjectID=7,ObjectPK=5,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 5","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"7","value":"NodeType=Object:19114337,ObjectID=22,ObjectPK=7,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 7","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"4","value":"NodeType=Object:19114334,ObjectID=7,ObjectPK=4,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 4","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"6","value":"NodeType=Object:19114335,ObjectID=22,ObjectPK=6,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 6","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"3","value":"NodeType=Object:19114332,ObjectID=7,ObjectPK=3,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 3","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"5","value":"NodeType=Object:19114333,ObjectID=22,ObjectPK=5,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 5","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]},{"ID":"7","PK":"2","value":"NodeType=Object:19114330,ObjectID=7,ObjectPK=2,EntityObjectPK=1000015","name":"Test Letter","tooltip":"7, 1714, 2","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Correspondence.jpg","Nodes":[{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"4","value":"NodeType=Object:19114331,ObjectID=22,ObjectPK=4,EntityObjectPK=1000015","name":"Correspondence","tooltip":"22, 1591, 4","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]}]}]},{"ID":"0","PK":"Association","value":"","name":"Association","tooltip":"Association","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"11","PK":"19117747","value":"NodeType=Association:4719,ObjectID=11,ObjectPK=19117747,EntityObjectPK=1000015","name":"Owns Business","tooltip":"11, 4719, 19117747","cssClass":"","image":"/UI/Private/Images/img_association_open.gif"}]},{"ID":"0","PK":"Address","value":"","name":"Address","tooltip":"Address","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"17","PK":"1080","value":"NodeType=Object:19117922,ObjectID=17,ObjectPK=1080,EntityObjectPK=1000015","name":"Test Address","tooltip":"17, 1711, 1080","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"3","value":"NodeType=Object:19114444,ObjectID=17,ObjectPK=3,EntityObjectPK=1000015","name":"Physical Address: Current","tooltip":"17, 1716, 3","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"2","value":"NodeType=Object:19114303,ObjectID=17,ObjectPK=2,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 2","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg","Nodes":[{"ID":"0","PK":"Address","value":"","name":"Address","tooltip":"Address","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"17","PK":"50","value":"NodeType=Object:19114682,ObjectID=17,ObjectPK=50,EntityObjectPK=1000015","name":"Mailing Address: Current","tooltip":"17, 1492, 50","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"49","value":"NodeType=Object:19114681,ObjectID=17,ObjectPK=49,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 49","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"48","value":"NodeType=Object:19114680,ObjectID=17,ObjectPK=48,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 48","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"47","value":"NodeType=Object:19114679,ObjectID=17,ObjectPK=47,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 47","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"46","value":"NodeType=Object:19114672,ObjectID=17,ObjectPK=46,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 46","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"45","value":"NodeType=Object:19114671,ObjectID=17,ObjectPK=45,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 45","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"44","value":"NodeType=Object:19114670,ObjectID=17,ObjectPK=44,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 44","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"43","value":"NodeType=Object:19114669,ObjectID=17,ObjectPK=43,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 43","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"41","value":"NodeType=Object:19114667,ObjectID=17,ObjectPK=41,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 41","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"},{"ID":"17","PK":"40","value":"NodeType=Object:19114666,ObjectID=17,ObjectPK=40,EntityObjectPK=1000015","name":"Mailing Address: Previous","tooltip":"17, 1492, 40","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Addresses.jpg"}]}]}]},{"ID":"0","PK":"Invoice","value":"","name":"Invoice","tooltip":"Invoice","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"18","PK":"7","value":"NodeType=Object:19114675,ObjectID=18,ObjectPK=7,EntityObjectPK=1000015","name":"Batch Fee","tooltip":"18, 1720, 7","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Invoice.jpg"},{"ID":"18","PK":"1","value":"NodeType=Object:19114419,ObjectID=18,ObjectPK=1,EntityObjectPK=1000015","name":"Batch Fee","tooltip":"18, 1720, 1","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Invoice.jpg","Nodes":[{"ID":"0","PK":"Payment","value":"","name":"Payment","tooltip":"Payment","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"23","PK":"2","value":"NodeType=Object:19114423,ObjectID=23,ObjectPK=2,EntityObjectPK=1000015","name":"Credit Card","tooltip":"23, 1527, 2","cssClass":"ChildPropertyNode","image":""},{"ID":"23","PK":"2","value":"NodeType=Object:19114422,ObjectID=23,ObjectPK=2,EntityObjectPK=1000015","name":"Credit Card","tooltip":"23, 1527, 2","cssClass":"ChildPropertyNode","image":""},{"ID":"23","PK":"1","value":"NodeType=Object:19114421,ObjectID=23,ObjectPK=1,EntityObjectPK=1000015","name":"Credit Card","tooltip":"23, 1527, 1","cssClass":"ChildPropertyNode","image":""}]}]}]},{"ID":"0","PK":"Document","value":"","name":"Document","tooltip":"Document","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"22","PK":"89","value":"NodeType=Object:19114677,ObjectID=22,ObjectPK=89,EntityObjectPK=1000015","name":"Test Document","tooltip":"22, 1712, 89","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"},{"ID":"22","PK":"87","value":"NodeType=Object:19114674,ObjectID=22,ObjectPK=87,EntityObjectPK=1000015","name":"Test Document","tooltip":"22, 1712, 87","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Document.jpg"}]},{"ID":"0","PK":"Names","value":"","name":"Names","tooltip":"Names","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"19","PK":"1000051","value":"NodeType=Object:19114442,ObjectID=19,ObjectPK=1000051,EntityObjectPK=1000015","name":"Individual Name: Current: _test: bag","tooltip":"19, 5, 1000051","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/Name.jpg"}]},{"ID":"0","PK":"History","value":"","name":"History","tooltip":"History","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"14","PK":"21","value":"NodeType=Object:19114432,ObjectID=14,ObjectPK=21,EntityObjectPK=1000015","name":"Medical School","tooltip":"14, 1708, 21","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/History.jpg"},{"ID":"14","PK":"20","value":"NodeType=Object:19114431,ObjectID=14,ObjectPK=20,EntityObjectPK=1000015","name":"Medical School","tooltip":"14, 1708, 20","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/History.jpg"},{"ID":"14","PK":"19","value":"NodeType=Object:19114430,ObjectID=14,ObjectPK=19,EntityObjectPK=1000015","name":"Medical School","tooltip":"14, 1708, 19","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/History.jpg"},{"ID":"14","PK":"18","value":"NodeType=Object:19114429,ObjectID=14,ObjectPK=18,EntityObjectPK=1000015","name":"Medical School","tooltip":"14, 1708, 18","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/History.jpg"},{"ID":"14","PK":"1","value":"NodeType=Object:19114277,ObjectID=14,ObjectPK=1,EntityObjectPK=1000015","name":"Medical School","tooltip":"14, 1708, 1","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/History.jpg"}]},{"ID":"0","PK":"Test Collection","value":"","name":"Test Collection","tooltip":"Test Collection","cssClass":"ParentPropertyNode","image":"/UI/private/images/Folder.jpg","Nodes":[{"ID":"14","PK":"17","value":"NodeType=Object:19114428,ObjectID=14,ObjectPK=17,EntityObjectPK=1000015","name":"High School","tooltip":"14, 1709, 17","cssClass":"ChildPropertyNode","image":"/UI/Private/Images/History.jpg"}]}]}]');
 
                var _savedSubtrees = null;
                this.savedSubtrees = new GLMDictionary(2);
                this.get_savedSubtrees = function() { return _savedSubtrees; };
                this.set_savedSubtrees = function(subtree) {
                    _savedSubtrees = subtree;
                };
 
                var etc;
                var _entitytreecontrol = { // static methods and attributes
                    // This data are pushed to the client from server on load (indicating the initial nodes to select)
                    _control: null,
                    _initialize: function() { },
                    _entityTreeCollapseAll: function(button, args) {
                        handleEntityTreeCollapseAll(button, args);
                    },
                    _entityTreeExpandAll: function(button, args) {
                        handleEntityTreeExpandAll(button, args);
                    },
                    _OnETCClientNodeClicking: function(sender, args) {
                    },
                    _OnETCClientNodeExpanding: function(sender, args) {
                    },
                    _keyRegister: [],
                    _loadingID: "<%= EntityTreeLoading.ClientID %>",
                    _treeName: "<%= entityTreeView.ClientID %>",
                    _updatePanel: "<%= EntityTreeUpdatePanel.ClientID %>",
                    _lastClick: null
                };
 
                function get_tree() {
                    return $find(_entitytreecontrol._treeName);
                }
 
                $(document).ready(function() {
                    appendNodesToTree(json_nodes);
                });
 
                function appendNodesToTree(json_msg) {
                    this.savedSubtrees.clear();   // clears the dictionary of sub-trees
 
                    this.addChildrenNodes(json_msg, this.get_tree().get_nodes(), [], this.get_tree());
 
                    this.get_tree().get_nodes()._array[0].select();
                }
 
                function findExistingNode(nodesArray, jsonNode) {
                    var i;
                    if (nodesArray) {
                        for (i = 0; i < nodesArray.length; i++) {
                            var existingNode = nodesArray[i];
                            var attrib = existingNode.get_attributes();
                            var id = attrib.getAttribute('objID');
                            var pk = attrib.getAttribute('objPK');
                            if (id == jsonNode.ID && pk == jsonNode.PK) {
                                return existingNode;
                            }
                        }
                    }
                    return null;
                }
 
                function findNodeDeep(node, jsonNode) {
                    var i;
                    if (node) {
                        var nodes = node.get_nodes();
                        for (i = 0; i < nodes.get_count() ; i++) {
                            var newNode = nodes.getNode(i);
                            var attrib = newNode.get_attributes();
                            var id = attrib.getAttribute('objID');
                            var pk = attrib.getAttribute('objPK');
                            if (id == jsonNode.ID && pk == jsonNode.PK) {
                                return newNode;
                            }
                            else {
                                var deepNode = this.findNodeDeep(newNode, jsonNode);
                                if (deepNode) {
                                    return deepNode;
                                }
                            }
                        }
                    }
                    return null;
                }
 
                function addChildrenNodes(json_nodes, appendPoint, oldNodeCollection, parentNode) {
 
                    var i;
                    var ei;
                    if (json_nodes) {
                        var existingNode;
                        for (i = 0; i < json_nodes.length; i++) {
                            existingNode = oldNodeCollection !== null ? this.findExistingNode(oldNodeCollection, json_nodes[i]) : null;
                            if (existingNode === null) {
                                existingNode = this.savedSubtrees.get_entry(json_nodes[i].ID, json_nodes[i].PK);
                            }
                            else if (existingNode.get_nodes().get_count() > 0) {
                                for (ei = 0; ei < existingNode.get_nodes().get_count() ; ei++) {
                                    var oldChildNode = existingNode.get_nodes().getNode(ei);
                                    var oldattrib = oldChildNode.get_attributes();
                                    var oldid = oldattrib.getAttribute('objID');
                                    var oldpk = oldattrib.getAttribute('objPK');
                                    this.savedSubtrees.set_entry(oldid, oldpk, existingNode);
                                }
                            }
                            var child = new Telerik.Web.UI.RadTreeNode();
                            child.set_text(json_nodes[i].name);
                            child.set_value(json_nodes[i]);
                            child.set_toolTip(json_nodes[i].tooltip);
                            //child.set_imageUrl(json_nodes[i].image);
                            child.set_cssClass(json_nodes[i].cssClass);
 
                            var attrib = child.get_attributes();
                            attrib.setAttribute('objID', json_nodes[i].ID);
                            attrib.setAttribute('objPK', json_nodes[i].PK);
 
                            if (existingNode !== null) {
                                child.set_selected(existingNode.get_selected());
                                child.set_expanded(existingNode.get_expanded());
                                child.set_enabled(existingNode.get_enabled());
                                if (child.get_expanded() && (!json_nodes[i].Nodes || json_nodes[i].Nodes.length === 0)) {
                                    glsuite.get_pageController().schedulePRB(this.processMenuRestoreViewRequest, this, 0, [child], null, null);
                                }
                            }
 
                            this.addChildrenNodes(json_nodes[i].Nodes, child.get_nodes(), (existingNode !== null ? existingNode.get_nodes().toArray() : null), child);
 
                            appendPoint.add(child);
                        }
                    }
                }
 
                function handleEntityTreeExpandAll(button, args) {
                    var i;
 
                    var treeView = this.get_tree();
                    var nodes = treeView.get_allNodes();
                    for (i = 0; i < nodes.length; i++) {
                        if (nodes[i].get_nodes() !== null) {
                            nodes[i].expand();
                        }
                    }
                }
 
                function handleEntityTreeCollapseAll(button, args) {
                    var i;
 
                    var treeView = this.get_tree();
                    var nodes = treeView.get_allNodes();
                    for (i = 0; i < nodes.length; i++) {
                        if (nodes[i].get_nodes() !== null) {
                            nodes[i].collapse();
                        }
                    }
                }
                //]]>
            </script>
        </telerik:RadScriptBlock>
        <table width="100%" style="overflow: scroll;">
            <tr style="overflow: scroll;">
                <td style="width: 15%; vertical-align: top;">
                    <table align="left" style="width: 100%;">
                        <tr align="center" style="width: 100px;">
                            <td style="vertical-align: top; text-align: left;">
                                <div>
                                    <br />
                                    <div>
                                        <table>
                                            <tr>
                                                <td>
                                                    <telerik:RadButton ID="showAllButton" runat="server"
                                                        EnableEmbeddedBaseStylesheet="false" AutoPostBack="false"
                                                        Text="Show All â–¶" OnClientClicked="_entitytreecontrol._entityTreeExpandAll">
                                                    </telerik:RadButton>
                                                </td>
                                                <td>
                                                    <telerik:RadButton ID="hideAllButton"
                                                        runat="server"
                                                        AutoPostBack="false" Text="Hide All â–¶" OnClientClicked="_entitytreecontrol._entityTreeCollapseAll"
                                                        CssClass="HideAllButton">
                                                    </telerik:RadButton>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                    <br />
                                    <telerik:RadAjaxPanel ID="EntityTreeUpdatePanel" runat="server">
                                        <telerik:RadTreeView ID="entityTreeView" runat="server"
                                            EnableAjaxSkinRendering="true" Height="500px" Width="300px"
                                            OnClientNodeClicking="_entitytreecontrol._OnETCClientNodeClicking"
                                            OnClientNodeExpanding="_entitytreecontrol._OnETCClientNodeExpanding"
                                            EnableEmbeddedScripts="true" EnableTheming="true" EnableViewState="false"
                                            ShowLineImages="false" TabIndex="1"
                                            SingleExpandPath="false"
                                            CausesValidation="false" Style="white-space: normal;"
                                            RegisterWithScriptManager="True" EnableAriaSupport="True">
                                        </telerik:RadTreeView>
                                    </telerik:RadAjaxPanel>
                                </div>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

Replication steps:
1) Expand enough nodes to have a scrollbar.
2) Select a node.
3) Scroll until the selected node is not in view.
4) Expand or Collapse a node.
5) The screen will scroll until the selected node is in view.  <- bad.

Please help me fix this.
Brent
Top achievements
Rank 1
 asked on 15 Dec 2014
7 answers
963 views
I have an issue with a button I can't seem to wrap my head around. 19 out of 20 times the button works exactly as intended. I started hearing about it a few days ago after I added an icon to a series of buttons on the page but I have not been able to reproduce it (trying IE, Chrome, FF). Today I stood over the shoulder of an end user (In Chrome) and saw it happen. The button triggers a window to open so the user can mark a process complete or not. Once the process is marked complete a Postback is performed and the page reloads with new records to process and the user once again clicks the button, marks it complete, and so on and so on. As I said its working just as expected most of the time but then stops for some users. The strangest part to me is if the user just lets the page sit for some amount of time (10-15 minutes) and clicks the button again it works until the next time. I also observed that behavior looking over the shoulder of the user today. 

Here is the relevant lines of code. Any guesses what might be going on that I'm not seeing?

function MarkRecordComplete(sender, args) {

            var strURL = "CompleteRecord.aspx?" + $('#<%=hdRecord.ClientID%>').val();
            var oManager = GetRadWindowManager();
            var oWnd = oManager.getWindowByName("radMarkRecordComplete");
            oWnd.setUrl(strURL);
            oWnd.show();

            args.set_cancel(true);
            
 }

 <telerik:RadButton ID="radButtonMarkRecordComplete" runat="server" Text="Mark Record Complete" Icon-PrimaryIconUrl="~/images/check16.png" ToolTip="Click to Mark This Record Complete" CausesValidation="false" OnClientClicking="MarkRecordComplete" ButtonType="StandardButton" UseSubmitBehavior="false" Skin="Silk"></telerik:RadButton>

<telerik:RadWindowManager ID="RadWindowManager1" runat="server" Skin="Silk"  Modal="True" VisibleTitlebar="True" VisibleStatusbar="False" AnimationDuration="750" Opacity="75" RenderMode="Lightweight" Behaviors="Close, Move, Resize, Maximize, Minimize, Pin">
    <Windows>
     <telerik:RadWindow runat="server" id="radMarkRecordComplete" Height="350" Width="650" OnClientClose="OnMarkRecordCompleteClose"></telerik:RadWindow>
    </Windows>
</telerik:RadWindowManager>























Rob
Top achievements
Rank 1
 answered on 15 Dec 2014
7 answers
139 views
Hello,
For some clients browsers, I have a problem of header column shift.
See the attached images . The data is shifted one column to the right.
Have you any idea ?
Many thanks
Bernard
​
Pavlina
Telerik team
 answered on 15 Dec 2014
1 answer
280 views
How would I get pasted content into the RadEditor to always "Paste Plain Text".  I want the exact same thing to happen as when I right click and select "Paste Plain Text"

I am unable to find the right StripFormattingOptions to simulate it exactly.  Removing all Word Content leaves other HTML and <p> tags.  If I remove "AllExceptNewLines" it puts a double space (two BR tags) every place there should only be a singe space.

When I right click and choose Paste Plain Text it correctly puts a single <br /> tag after each line. 

I attached #1 the original (email in this case).  #2 I attached the way the content looks using right click "Paste Plain Text" and #3 I attached what it looks like when removing "AllExceptNewLines"
Ianko
Telerik team
 answered on 15 Dec 2014
3 answers
111 views
Is there a Twitter Follow button within the SocialShare control?  My website has a couple of social media links which I would like to standardize with the SocialShare control.  One of these links is Twitter Follow.  I don't want to lose this option when I add in the new control.

Thanks,
David
Danail Vasilev
Telerik team
 answered on 15 Dec 2014
1 answer
175 views
Hi,
I am using this code in an auto-generated grid (there is a radwindow manager on my master page), but I still get no dialog?

protected void grdUsers_PreRender(object sender, EventArgs e)
{
    GridButtonColumn gbc = (GridButtonColumn)grdUsers.MasterTableView.GetColumn("AutoGeneratedDeleteColumn");
    gbc.ConfirmDialogType = GridConfirmDialogType.RadWindow;
    gbc.ConfirmText = "Continue to delete?";           
}
Maria Ilieva
Telerik team
 answered on 15 Dec 2014
6 answers
196 views
Hi,

I am trying to add a few space after last schedule slot inside timeline view. My scheduler will allow the user to key in three different timing in schedule. But after key in two timing , there is no space to allow them to click on timeslot to add one more timing with inline edit view. Please see below picture.


I tried to play around  with css.
.RadScheduler .rsTimelineView .rsAptIn
  {
      height:14px !important;
  }
  .RadScheduler .rsTimelineView .rsAptMid
  {
      height:14px !important;
  }
   
 
.RadScheduler .rsTimelineView  .rsAptOut
 {
      height:14px !important;
  }
   
   .RadScheduler .rsTimelineView  .rsApt
 {
      height:14px !important;
  }
   
  .RadScheduler .rsTimelineView .rsLastWrap .rsLastSpacingWrapper
  {
      height: 30px !important;
  }

 But it will apply for both schedule slot as below picture. I don't want space in between. Is there anyone who can help me with this issue.
 

Thanks in advance.

Best regards,
Ei Wai





Boyan Dimitrov
Telerik team
 answered on 15 Dec 2014
5 answers
842 views
Hi,

I have tried several combinations from other posts but I cannot see why my grid looks as in the screenshot?

​
<div style="height:400px; border:solid">
    <telerik:RadGrid ID="RadGrid1" Height="100%" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource1" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" GroupPanelPosition="Top" ShowGroupPanel="True" AllowMultiRowSelection="True">
        <ClientSettings AllowDragToGroup="True">
            <Selecting AllowRowSelect="True" />
            <Scrolling AllowScroll="True" UseStaticHeaders="True" ScrollHeight="100%" />
            <Resizing AllowColumnResize="True" AllowResizeToFit="True" />
        </ClientSettings>
        <MasterTableView >
           ...
        </MasterTableView>
    </telerik:RadGrid>
</div>
Al
Top achievements
Rank 1
Iron
Iron
Iron
 answered on 15 Dec 2014
Narrow your results
Selected tags
Tags
+? more
Top users last month
Miljana
Top achievements
Rank 2
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Bronze
Cynthia
Top achievements
Rank 1
John
Top achievements
Rank 1
Iron
Mozart
Top achievements
Rank 1
Iron
Veteran
Want to show your ninja superpower to fellow developers?
Top users last month
Miljana
Top achievements
Rank 2
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Bronze
Cynthia
Top achievements
Rank 1
John
Top achievements
Rank 1
Iron
Mozart
Top achievements
Rank 1
Iron
Veteran
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?