Telerik Forums
UI for ASP.NET AJAX Forum
3 answers
185 views

I've noticed some funny behavior when I combine the UseStaticHeaders and GridTemplateColumn configurations for the RadGrid.

The grid loses the header and the detail disappears on occasion as well.

Here is a snippet of code:

<telerik:RadGrid
runat="server"
ID="gridSample"
AutoGenerateColumns="false"
ShowHeader="true"
ShowFooter="false"
OnItemDataBound="gridSample_ItemDataBound"
OnNeedDataSource="gridSample_NeedDataSource"
>
<ClientSettings>
<Scrolling AllowScroll="true" ScrollHeight="400px" UseStaticHeaders="true" />
</ClientSettings>
<MasterTableView EnableNoRecordsTemplate="true">
<NoRecordsTemplate>
<asp:Label runat="server" Text="There is no file to review" />
</NoRecordsTemplate>
<Columns>
<telerik:GridTemplateColumn HeaderText="Name" UniqueName="Name">
<ItemTemplate>
<asp:Label runat="server" Text='<%# Eval("LastName") + ", " + Eval("FirstName") + " " + Eval("MiddleName") %>' />
</ItemTemplate>
<ItemStyle Width="45%" HorizontalAlign="Left" />
<HeaderStyle Width="45%" HorizontalAlign="Left" />
</telerik:GridTemplateColumn>
.

.

.

</Columns>
</MasterTableView>
</telerik:RadGrid>

I believe the sticking point is the use of static headers with the grid template columns. If I remove either the template columns or the UseStaticHeaders declarative, the problem goes away.

This is an older app that i am supporting and it is using the 2015.1.225.35 version of the assembly.
Pavlina
Telerik team
 answered on 01 Mar 2016
1 answer
140 views

I am using a RadGrid with batch edit mode. I want to have keyboard navigation turned on so that a user can tab through the columns in the current row. When this is turned on the default behavior is that when a user hits tab on the last control of a row, when there are additional rows in the grid, the user is navigated to the next row. What I want to prevent is the navigation to the next row when the last control in the edited row is currently being edited and the user presses tab. Is this possible? Is it possible to save that row edit if tab is pressed on that last control?

 

Thank you for your time.

Kostadin
Telerik team
 answered on 01 Mar 2016
0 answers
47 views

Hello

in a combobox the user writes the city and the program should search for this city according to written characters obviously do a search in a sql table that has over 9000 records. I set of keywords to speed everything but I ask you, which of the two methods of code is more powerful?

 

Protected Sub luogoresidenza_ItemsRequested(sender As Object, e As RadComboBoxItemsRequestedEventArgs) Handles luogoresidenza.ItemsRequested
        Using Context As New touristEntities
                If Not [String].IsNullOrEmpty(e.Text) Then
                    Dim Query = (From c In Context.Tab_comuni_nazioni
                                 Where c.c_descrizione.StartsWith(e.Text)
                                 Order By c.c_descrizione
                                 Select c.c_idrecord, c.c_descrizione).ToList
 
                    Dim query1 = Query.Skip(e.NumberOfItems).Take(10)
                    luogoresidenza.DataSource = query1
                    luogoresidenza.DataBind()
 
                    Dim endOffset As Integer = e.NumberOfItems + query1.Count()
                    Dim totalCount As Integer = Query.Count()
 
                    If endOffset = totalCount Then
                        e.EndOfItems = True
                    End If
 
                    e.Message = [String].Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffset, totalCount)
                End If
        End Using
    End Sub

Or better to use a web service?

 

 

Fabio Cirillo
Top achievements
Rank 1
 asked on 01 Mar 2016
4 answers
208 views
 I have a rad rotator. I want to show a tooltip On radrotator OnClientItemClicked event
. I also Want to get the text of lblDescription in to tootip's Label1. . Is  there any way to do this in client side.My code is Here.. Thanks in Advance

<telerik:RadRotator ID="RadRotator1" runat="server" FrameDuration="1"
                     ScrollDirection="up" Height="140px"  ScrollDuration="2000"  OnClientItemClicked="itemclicked"
                    Width="100%"   >

                    <ItemTemplate>
      
                  
                        <asp:LinkButton ID="LinkButton1" runat="server" Font-Size="Small" Font-Italic="False" ForeColor="#0033CC">
                                             <%#  Eval("Title")%></asp:LinkButton>
                              <asp:Label ID="lblDescription" runat="server" ><%# Eval("Description")%>                  </asp:Label>

                    </ItemTemplate>
    </telerik:RadRotator>


     <telerik:RadToolTip runat="server" ID="RadToolTip2"  ShowEvent="FromCode"  ShowDelay="0" TargetControlID="LinkButton1" Animation="Slide"
                        HideEvent="ManualClose" Width="300px" RelativeTo="Element" Position="MiddleRight" >
                        
                          <asp:Label ID="Label2" runat="server" >             </asp:Label>

                        </telerik:RadToolTip>
Stamo Gochev
Telerik team
 answered on 01 Mar 2016
3 answers
2.1K+ views

I'm experiencing an issue getting my UpdatePanel to work properly in a C# ASP.NET project.  It's identical code to multiple other pages in my solution, but has unusual behavior on this page.  The goal is simply to allow the user to change a radio button which then alters the visibility of various table rows further down in the UpdatePanel.  Interestingly enough, the CheckBox works as expected.

In my current page, I have the following code:

<asp:UpdatePanel ID="updatePanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <span class="stepTitle">Set Fluid Properties</span>
        <div class="calculateInnerDiv">
            <asp:RadioButtonList ID="FluidTypeList" runat="server" AutoPostBack="true" RepeatDirection="Horizontal" TabIndex="101" OnSelectedIndexChanged="FluidTypeList_Changed">
                 <asp:ListItem Text="" Value="Liquid" />
                 <asp:ListItem Text="" Value="Gas" />
                 <asp:ListItem Text="" Value="Steam" />
             </asp:RadioButtonList>
             <asp:CheckBox ID="IsCompressibleCheckBox" runat="server" AutoPostBack="true"  Text="Fluid Is Compressible" Checked="<%# model.isCompressible %>" TabIndex="101" OnCheckedChanged="IsCompressible_Changed" />
.
.
.

However, when it renders, there is an extra RadAjaxPanel that is being created, as seen below.  This panel does not get generated in any of the other pages with a similar process.  Due to the extra panel, I receive a JS error of "Uncaught TypeError: Cannot read property 'id' of null" in "Telerik.Web.UI.WebResource.axd:3776".  It also displays "867|updatePanel|ctl00_ctl00_mainHolder_FluidTypeListPanel|" on the page.

<div id="mainHolder_updatePanel"> <!-- this is the main UpdatePanel -->
    <span class="stepTitle">Set Fluid Properties</span>
    <div class="calculateInnerDiv">
        <div class="RadAjaxPanel" id="ctl00_ctl00_mainHolder_FluidTypeListPanel"> <!-- this should not exist and throws errors like I have nested update panels -->
        <table id="mainHolder_FluidTypeList">
            <tr>...</tr>
        </table>
    </div>
    <input id="mainHolder_IsCompressibleCheckBox" type="checkbox" name="ctl00$mainHolder$IsCompressibleCheckBox" onclick="javascript:setTimeout('__doPostBack(\'ctl00$mainHolder$IsCompressibleCheckBox\',\'\')', 0)" tabindex="101" />
.

For my codebehind, I run a case statement that hides/displays certain fields based on the selection, and then it calls updatePanel.Update().  Any suggestions are absolutely welcome as I'm at my wit's end on this.

 

Thank you for your time.

Viktor Tachev
Telerik team
 answered on 01 Mar 2016
1 answer
160 views

I have one radgrid in user control.

I am loading that user control using RadMultiPage in my .aspx page.

If I load that user control in default pageview then Pagination dropdown of radgrid working fine but if I load that same user control in other pageview of RadMultiPage using Ajax Request of RadAjaxManager then pagination dropdown not working. It is not performing any action like hover, focused, click etc. 

Other pagination controls are working fine. After refreshing grid or after any post back dropdown working fine.

 

Code of My .aspx file

 

<radA:RadAjaxManager ID="radAjaxManager"
        runat="server"
        AjaxUrl="OrderMain.aspx"
        OnAjaxRequest="radAjaxManager_AjaxRequest" ClientEvents-OnRequestStart="reqStart()" ClientEvents-OnResponseEnd="resEnd()">
         
    </radA:RadAjaxManager>
 
 
 
<div id="divReportsTreeViewContainer" class="reportsTreeViewContainer">
 
        <radT:RadTreeView ID="radTreeViewReports"
            runat="server"
            Skin="Arrows/3DClassic"
            ImagesBaseDir="Images/"
            ExpandDelay="1"
            OnNodeExpand="radTreeViewReports_NodeExpand"
            ShowLineImages="false"
            AutoPostBack="False">
        </radT:RadTreeView>
 
    </div>
 
 
<radTS:RadMultiPage ID="radMultiPageOrders"
        runat="server"
        RenderSelectedPageOnly="true"
        SelectedIndex="0">
        <radTS:PageView ID="defaultPage" runat="server">
            <MyOwnControl:MyControl runat="server" id="mycontrol1" />
        </radTS:PageView>
        <radTS:PageView ID="FirstPage" runat="server">
            <MyOwnControl:MyControl runat="server" id="mycontrol1" />
        </radTS:PageView>
         
    </radTS:RadMultiPage>

 

Code of .aspx.cs

 

protected void radAjaxManager_AjaxRequest(object sender, Telerik.WebControls.AjaxRequestEventArgs e)
        {
              
           switch (e.Argument)
                {
                    case 1:
                        {
                            radMultiPageOrders.SelectedIndex = 0;
                            break;
                        }
                    case 2:
                        {
                            radMultiPageOrders.SelectedIndex = 1;
                            break;
                        }
                     
                    default:
                        {
                            radMultiPageOrders.SelectedIndex = 0;
                            break;
                        }
                }
        }

 

My RadGrid declaration

 

<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" ShowFooter="true" Skin="Telerik"
        AllowSorting="True" AutoGenerateColumns="False" ShowStatusBar="true" SelectedItemStyle-BackColor="Green"
        OnPreRender="RadGrid1_PreRender" OnNeedDataSource="RadGrid1_NeedDataSource" OnUpdateCommand="RadGrid1_UpdateCommand1"
        OnInsertCommand="RadGrid1_InsertCommand" OnDeleteCommand="RadGrid1_DeleteCommand" OnItemDataBound="RadGrid1_ItemDataBound1"
        OnItemCommand="RadGrid1_ItemCommand" PageSize="5" CellSpacing="0"></telerik:RadGrid>

Pavlina
Telerik team
 answered on 01 Mar 2016
2 answers
109 views

I have a user control on a page which is a RadRotator control.  The page is ajaxified.  There is a combobox which causes the usercontrol to refresh.

With Ajax disabled, it works great.

With Ajax enabled, when the usercontrol updates itself, it is fine.  When the combobox updates the usercontrol, all of the items in the usercontrol are listed vertically. 

Page:

RadAjaxManager1.AjaxSettings.AddAjaxSetting(clientcbo, this.QuickReportsFormDiv, null, UpdatePanelRenderMode.Inline);

 

UserControl:

<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
    </telerik:RadAjaxManagerProxy>

<telerik:RadScriptBlock ID="RadScriptBlockqrtr" runat="server">
    <script type="text/javascript">

        function ShowError(sender, args) {
            alert('Quick Report Request Failed with unknown error.');
        }
    </script>
</telerik:RadScriptBlock>

<asp:Panel id="QuickReportsFormDiv" runat="server" style="min-height: 66px; margin-bottom: 5px; white-space: normal!important">
                    
        <telerik:RadRotator ID="QuickReportsRadRotator" runat="server" 
            RenderMode="Lightweight" Height="100px" Width="100%"
            RotatorType="Buttons" EnableDragScrolling="false" WrapFrames="false" 
            ScrollDirection="Left,Right" ScrollDuration="1" 
            AppendDataBoundItems="false"
            OnItemClick="QuickReportsRadRotator_ItemClick"
           >
            
            <ItemTemplate>
                
                    <telerik:RadBinaryImage ID="QuickReportsControl" runat="server"
                        CssClass="QRThumbnails"
                        AlternateText='<%# Eval("FileUploadID") %>'  ToolTip='<%# Eval("FileTitle") %>' 
                        DataValue='<%# Eval("ThumbnailBinaryData") %>'
                        />
            </ItemTemplate>
        </telerik:RadRotator>                 

    </asp:Panel>

 

Stamo Gochev
Telerik team
 answered on 01 Mar 2016
12 answers
2.6K+ views
Hi,

I tried to use a RadWindows as a container, I put a radtextbox it in.
Then I wanted my user to right click on a listbox item and then Click "Edit"  (from a RadContextMenu), I want to update the textbox based on the user's selection. So I need to open RadWindow from Server Side code. But if I use the OpenElementID properties, the client side event of the "Edit" item won't be fired.

Any idea?

Andy Ho
sushant
Top achievements
Rank 1
 answered on 01 Mar 2016
4 answers
437 views
Hi,

We use Telerik grid for VS2008, version 2011.3.1115.0.

I have 2 issues:

1) When I create columns manually in this way:

<div style="margin-right: 20px;">
    <telerik:RadGrid ID="RadGrid1" runat="server" Width="100%" DataSourceID="SqlDataSource1" AllowAutomaticDeletes="true" AllowAutomaticInserts="true" AllowAutomaticUpdates="true"
        AutoGenerateColumns="false" AllowMultiRowSelection="true">
        <MasterTableView PageSize="10" AllowPaging="True" Width="100%" DataKeyNames="ContinentID" DataSourceID="SqlDataSource1" EditMode="InPlace">
            <Columns>
                <telerik:GridClientSelectColumn></telerik:GridClientSelectColumn>
                <telerik:GridBoundColumn HeaderText="ContinentID" DataField="ContinentID"></telerik:GridBoundColumn>
                <telerik:GridBoundColumn HeaderText="ContinentName" DataField="ContinentName"></telerik:GridBoundColumn>
            </Columns>
        </MasterTableView>
        <ClientSettings>
            <ClientEvents OnRowContextMenu="RowContextMenu"></ClientEvents>
            <Selecting AllowRowSelect="true"></Selecting>
        </ClientSettings>
    </telerik:RadGrid>
</div>

The code behind is as follows:

RadGrid1.ExportSettings.ExportOnlyData = true;
RadGrid1.ExportSettings.IgnorePaging = true;
RadGrid1.ExportSettings.OpenInNewWindow = true;
RadGrid1.MasterTableView.ExportToExcel();

When I export grid to Excel file the Boolean values from first check box column are exported as well. How can I export all data but without those Boolean values?

2) When I want to export data only from selected rows from grid that contains the first check box column to Excel file using the following code:

foreach (GridDataItem item in RadGrid1.Items)
{
    if (item.Selected == false)
    {
        item.Visible = false;
    }
}
RadGrid1.ExportSettings.ExportOnlyData = true;
RadGrid1.ExportSettings.IgnorePaging = true;
RadGrid1.ExportSettings.OpenInNewWindow = true;
RadGrid1.MasterTableView.ExportToExcel();

not only selected rows, but whole grid was exported.

How can I solve these 2 issues?

Thank you in advance.

Goran
P
Top achievements
Rank 1
 answered on 29 Feb 2016
4 answers
140 views

Hi,

I was trying hard to use Gantt with Oracle Database over the Oracle Managed Connection, with Visual Studio 2013/ASP.NET 4.5. Well I had a few problems.

Then I returned to the blackboard and Worked on your Example. Then I hit an end.

So when you want resource assignments to be made, You cant. The events do not trigger. Am I missing something?

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Temp_GanttBinding_List.aspx.cs" Inherits="GanttDBConnection.Temp_GanttBinding_List" %>
 
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI.Gantt" tagprefix="cc1" %>
 
<!DOCTYPE html>
 
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <telerik:RadScriptManager runat="server"></telerik:RadScriptManager>
    <div>
 
        <telerik:RadGantt runat="server" ID="RadGantt1"
            Culture="tr-TR" LocalizationPath="LocalResources"
            SnapToGrid="false" AutoGenerateColumns="false"
            SelectedView="MonthView" EnableResources="true"
 
            OnDependencyInsert="RadGantt1_DependencyInsert"
            OnDependencyDelete="RadGantt1_DependencyDelete"
 
            OnTaskDelete="RadGantt1_TaskDelete"
            OnTaskUpdate="RadGantt1_TaskUpdate"
            OnTaskInsert="RadGantt1_TaskInsert"
             
            OnAssignmentDelete="RadGantt1_AssignmentDelete"
            OnAssignmentInsert="RadGantt1_AssignmentInsert"
            OnAssignmentUpdate="RadGantt1_AssignmentUpdate"
            >
            <Columns>
                <telerik:GanttBoundColumn DataField="ID" HeaderText="#" Width="40px"></telerik:GanttBoundColumn>
                <telerik:GanttBoundColumn DataField="Title" HeaderText="BaÅŸlık" DataType="String"></telerik:GanttBoundColumn>
                <telerik:GanttResourceColumn HeaderText="Atanmış Kaynak"></telerik:GanttResourceColumn>
            </Columns>
 
            <DataBindings>
                <TasksDataBindings  IdField="ID"  TitleField="Title"  StartField="Start"  EndField="End"
                    PercentCompleteField="PercentComplete"  OrderIdField="OrderID"  SummaryField="Summary"  ParentIdField="ParentID" />
 
                <DependenciesDataBindings  IdField="ID"  PredecessorIdField="PredecessorID"
                    SuccessorIdField="SuccessorID"  TypeField="Type" />
                 
                <ResourcesDataBindings IdField="ID"
                    TextField="Name"
                    ColorField="Color" />
 
                <AssignmentsDataBindings IdField="ID"
                    TaskIdField="TaskID"
                    ResourceIdField="ResourceID"
                    UnitsField="Units" />
            </DataBindings>
        </telerik:RadGantt>
 
    </div>
    </form>
</body>
</html>

 

Then I kind of added some to simulate my own project.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using Telerik.Web.UI.Gantt;
using System.Data;
 
namespace GanttDBConnection
{
    public partial class Temp_GanttBinding_List : System.Web.UI.Page
    {
        private const string TasksKey = "Telerik.GanttSample.Tasks";
        private const string DependenciesKey = "Telerik.GanttSample.Dependencies";
        private const string AssignmentsKey = "Telerik.GanttSample.Assignments";
        private const string ResourcesKey = "Telerik.GanttSample.Resources";
 
        private List<Task> Tasks
        {
            get
            {
                List<Task> sessionTasks = Session[TasksKey] as List<Task>;
 
                if (sessionTasks == null)
                {
                    sessionTasks = new List<Task>();
 
                    sessionTasks.Add(new Task
                    {
                        ID = 1,
                        Title = "Yeni Görev",
                        Start = new DateTime(2015, 8, 5, 12, 40, 0),
                        End = new DateTime(2015, 8, 5, 12, 40, 0),
                        OrderID = 0
                    });
 
                    Session[TasksKey] = sessionTasks;
                }
 
                return sessionTasks;
            }
        }
 
        public List<Dependency> Dependencies
        {
            get
            {
                List<Dependency> sessionDependencies = Session[DependenciesKey] as List<Dependency>;
 
                if (sessionDependencies == null)
                {
                    sessionDependencies = new List<Dependency>();
 
                    Session[DependenciesKey] = sessionDependencies;
                }
 
                return sessionDependencies;
            }
        }
 
        public List<CustomGanttResource> CustomGanttResources
        {
            get
            {
                List<CustomGanttResource> sessionResources = Session[ResourcesKey] as List<CustomGanttResource>;
 
                if (sessionResources == null)
                {
                    sessionResources = new List<CustomGanttResource>();
 
                    sessionResources.Add(new CustomGanttResource
                    {
                        ID = 1,
                        Name = "Mutlu",
                        Color = "#ff0000"
                    });
 
                    Session[ResourcesKey] = sessionResources;
                }
 
                return sessionResources;
            }
        }
 
        public List<Assignment> Assignments
        {
            get
            {
                List<Assignment> sessionAssignments = Session[AssignmentsKey] as List<Assignment>;
 
                if (sessionAssignments == null)
                {
                    sessionAssignments = new List<Assignment>();
 
                    Session[DependenciesKey] = sessionAssignments;
                }
 
                return sessionAssignments;
            }
        }
 
        protected void Page_Load(object sender, EventArgs e)
        {
            RadGantt1.DataSource = Tasks;
            RadGantt1.DependenciesDataSource = Dependencies;
            RadGantt1.ResourcesDataSource = CustomGanttResources;
            RadGantt1.AssignmentsDataSource = Assignments;
        }
 
        protected void RadGantt1_TaskDelete(object sender, TaskEventArgs e)
        {
            foreach (Task task in e.Tasks)
            {
                var original = GetByID((int)task.ID);
 
                Tasks.Remove(original);
            }
        }
 
        protected void RadGantt1_TaskUpdate(object sender, TaskEventArgs e)
        {
            foreach (Task task in e.Tasks)
            {
                var original = GetByID((int)task.ID);
 
                original.Start = task.Start;
                original.End = task.End;
                original.Title = task.Title;
                original.PercentComplete = task.PercentComplete;
                original.OrderID = task.OrderID;
                original.Summary = task.Summary;
                original.ParentID = task.ParentID;
            }
        }
 
        protected void RadGantt1_TaskInsert(object sender, TaskEventArgs e)
        {
            foreach (Task task in e.Tasks)
            {
                task.ID = NextID();
 
                Tasks.Add(task);
            }
        }
 
        private Task GetByID(int id)
        {
            return Tasks.Find((task) => (int)task.ID == id);
        }
 
        private int NextID()
        {
            var nextID = 0;
 
            foreach (ITask task in Tasks)
            {
                if ((int)task.ID > 0)
                {
                    nextID = (int)task.ID;
                }
            }
 
            return ++nextID;
        }
 
        protected void RadGantt1_DependencyInsert(object sender, DependencyEventArgs e)
        {
            foreach (Dependency dependency in e.Dependencies)
            {
                dependency.ID = NextDependencyID();
 
                Dependencies.Add(dependency);
            }
        }
 
        protected void RadGantt1_DependencyDelete(object sender, DependencyEventArgs e)
        {
            foreach (Dependency dependency in e.Dependencies)
            {
                var original = GetDependencyByID((int)dependency.ID);
 
                Dependencies.Remove(original);
            }
        }
 
        private Dependency GetDependencyByID(int id)
        {
            return Dependencies.Find((dependency) => (int)dependency.ID == id);
        }
 
        private int NextDependencyID()
        {
            var nextID = 0;
 
            foreach (IDependency dependency in Dependencies)
            {
                if ((int)dependency.ID > 0)
                {
                    nextID = (int)dependency.ID;
                }
            }
 
            return ++nextID;
        }
 
        protected void RadGantt1_AssignmentDelete(object sender, AssignmentEventArgs e)
        {
            //Just to see if this event triggers.
            int a = 5;
        }
 
        protected void RadGantt1_AssignmentInsert(object sender, AssignmentEventArgs e)
        {
            //Just to see if this event triggers.
            int a = 5;
        }
 
        protected void RadGantt1_AssignmentUpdate(object sender, AssignmentEventArgs e)
        {
            //Just to see if this event triggers.
            int a = 5;
        }
 
        public class CustomGanttResource
        {
            public void CustomGanttResources(int ID, string Name, string Color)
            {
                _ID = ID;
                _Name = Name;
                _Color = Color;
            }
            private int _ID;
            public int ID
            {
                get { return _ID; }
                set { _ID = value; }
            }
            private string _Name;
            public string Name
            {
                get { return _Name; }
                set { _Name = value; }
            }
            private string _Color;
            public string Color
            {
                get { return _Color; }
                set { _Color = value; }
            }
        }
 
    }
}

 

 

Thanks in Advance.

Mutlu

Nencho
Telerik team
 answered on 29 Feb 2016
Narrow your results
Selected tags
Tags
+? more
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?