Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
328 views

I have a radGrid with a Master-Child-Relation and Edit mode is set to Batch.
The data will be populated via OnNeedDataSource for the master and via OnDetailTableDataBind.
The master table columns are readonly; the child columns not.
I would like to process data changes in the OnBatchEditCommand but the detail changes were not submitted.
(The e.Commands-collection has no members).

Any ideas ?

Thanks in advance.

The example show a simple Role/UsersInRole relationship.

<telerik:RadGrid ID="RadGrid2" runat="server"

 AutoGenerateColumns="False"

 CellSpacing="0"

 CellPadding="0"

 GridLines="None"

 MasterTableView-EditMode="Batch"

 Width="350px"

 AllowMultiRowEdit="true"

 OnNeedDataSource="RadGrid2_NeedDataSource"

 OnBatchEditCommand="RadGrid2_BatchEditCommand"

 OnDetailTableDataBind="RadGrid2_DetailTableDataBind">

 <MasterTableView

 DataKeyNames="Rolename"

 EditMode="Batch"

 CommandItemDisplay="Top"

 HierarchyDefaultExpanded="true"

 ExpandCollapseColumn-Visible="true"

 GroupsDefaultExpanded="true">

 <RowIndicatorColumn>

 <HeaderStyle Width="20px"></HeaderStyle>

 </RowIndicatorColumn>

 <ExpandCollapseColumn Visible="true" >

 <HeaderStyle Width="20px"></HeaderStyle>

 </ExpandCollapseColumn>

 <CommandItemSettings ShowSaveChangesButton="true" ShowCancelChangesButton="true" ShowAddNewRecordButton="false" ShowRefreshButton="false"/>

 <Columns>

 <telerik:GridBoundColumn UniqueName="Rolename" DataField="Rolename" HeaderText="Role"></telerik:GridBoundColumn>

 </Columns>

 <DetailTables>

 <telerik:GridTableView runat="server"

 Name="Detail"

 AutoGenerateColumns="false"

 DataKeyNames="Username"

 Width="100%"

 EditMode="Batch"

 ShowHeader="false"

 ShowFooter="false"

 AllowPaging="false"

 AllowFilteringByColumn="false"

 GridLines="None"

 BorderStyle="None"

 BatchEditingSettings-EditType="Cell">

 <ParentTableRelation>

 <telerik:GridRelationFields

 DetailKeyField="Rolename"

 MasterKeyField="Rolename" />

 </ParentTableRelation>

 <Columns>

 <telerik:GridBoundColumn UniqueName="Rolename" DataField="Rolename" HeaderText="Role" Display="false"></telerik:GridBoundColumn>

 <telerik:GridBoundColumn UniqueName="Username" DataField="Username" HeaderText="User"></telerik:GridBoundColumn>

 </Columns>

 </telerik:GridTableView>

 </DetailTables>

 </MasterTableView>
</telerik:RadGrid>

 

 

 

protected void RadGrid2_BatchEditCommand(object sender, GridBatchEditingEventArgs e)
{
   // e.Commands has no items for changes made in detail view
   foreach (GridBatchEditingCommand command in e.Commands)
   {
      Hashtable newValues = command.NewValues;
      Hashtable oldValues = command.OldValues;
      string OldRolename = oldValues["Rolename"].ToString();
      string NewRolename = newValues["Rolename"].ToString();
 
      // processing values
 
   }
}
 
protected void RadGrid2_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
   if (!e.IsFromDetailTable)
      {
         RadGrid2.DataSource = GetRoles();
      }
}
 
protected void RadGrid2_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
   var parentItem = e.DetailTableView.ParentItem as GridDataItem;
   if (e.DetailTableView.Name == "Detail")
   {
      string Rolename = parentItem.GetDataKeyValue("Rolename").ToString();
      e.DetailTableView.DataSource = GetUsersInRole(Rolename);
   }
}

 

Michael
Top achievements
Rank 1
 answered on 08 Oct 2013
2 answers
125 views
I have the next Calendar, and inside a DateInput. Now the EmptyMessage is always "Fecha Informe", but i like change that with a data from a File of resources file.resx.... does somebody how?

<telerik:RadDatePicker ID="rdpDate" runat="server" Width="125px" Culture="es-ES" meta:resourcekey="rdpDateResource1">
                            <Calendar ID="Calendar1" runat="server" UseColumnHeadersAsSelectors="False" UseRowHeadersAsSelectors="False" ViewSelectorText="x">
                            </Calendar>
                            <DateInput ID="DateInput1" runat="server" DateFormat="dd/MM/yyyy" DisplayDateFormat="dd/MM/yyyy" EmptyMessage="Fecha informe" LabelWidth="64px" Width="">
                                <EmptyMessageStyle Font-Italic="True" ForeColor="Gray" />
                            </DateInput>
                            <DatePopupButton />
                            </telerik:RadDatePicker>
Eyup
Telerik team
 answered on 08 Oct 2013
17 answers
833 views
I have a radgrid with autoinsert, delete, edit turned on. My EditMode is INLINE. The grid has a single text column.  For edit I have it working to show a hidden column with my save button in it doing this in pre-render

if (rgTags.EditIndexes.Count > 0)
            {
                rgTags.MasterTableView.GetColumn("EditTag").Visible = false;
                rgTags.MasterTableView.GetColumn("DeleteTag").Visible = false;
                rgTags.MasterTableView.GetColumn("SaveTag").Visible = true;
            }
            else
            {
                rgTags.MasterTableView.GetColumn("EditTag").Visible = true;
                rgTags.MasterTableView.GetColumn("DeleteTag").Visible = true;
                rgTags.MasterTableView.GetColumn("SaveTag").Visible = false;
            }

I need to do the same thing for insert mode.   How can I do that?
Mayur
Top achievements
Rank 1
 answered on 08 Oct 2013
5 answers
399 views
Hi,

Im trying to use RadProgressArea to show a progress bar for custom DB task. It shows up and the progress is shown.
The issue is after completion of task, it still shows up and doesnt hide.

If i remove the RadAjaxManager updating the panel, then on completion of task the RadProgressArea goes off.


Following is the code snippet for my aspx and code behind
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="ProgressBarSample.WebForm4" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <telerik:RadScriptManager id="ScriptManager1" runat="server" />
     <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="buttonSubmit">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="Panel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" IsSticky="true">
    </telerik:RadAjaxLoadingPanel>
            <asp:Panel runat="server" ID="Panel1">
                <asp:Label ID="lbl1" runat="server"></asp:Label>
            </asp:Panel>
            <asp:button ID="buttonSubmit" runat="server" Text="Submit" OnClick="buttonSubmit_Click" CssClass="RadUploadButton" />
             
            <telerik:RadProgressManager id="Radprogressmanager1" runat="server" />
             
            <telerik:RadProgressArea id="RadProgressArea1" runat="server" />
             
            <br /><br /><br /><br /><br /><br />
    </div>
    </form>
</body>
</html>
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.Upload;
 
namespace ProgressBarSample
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //Do not display SelectedFilesCount progress indicator.
                RadProgressArea1.ProgressIndicators &= ~ProgressIndicators.SelectedFilesCount;
            }
 
            RadProgressArea1.Localization.Uploaded = "Total Progress";
            RadProgressArea1.Localization.UploadedFiles = "Progress";
            RadProgressArea1.Localization.CurrentFileName = "Custom progress in action: ";
        }
        protected void buttonSubmit_Click(object sender, System.EventArgs e)
        {
            UpdateProgressContext();
            lbl1.Text = "Updated";
        }
 
        private void UpdateProgressContext()
        {
            const int total = 100;
 
            RadProgressContext progress = RadProgressContext.Current;
            progress.Speed = "N/A";
 
            for (int i = 0; i < total; i++)
            {
                
                 
                progress.PrimaryTotal = 1;
                progress.PrimaryValue = 1;
                progress.PrimaryPercent = 100;
                int per = Convert.ToInt32((Convert.ToDouble(i) / total)*100);
                UpdateProgress(progress,total,i,per);
                progress.CurrentOperationText = "Step " + i.ToString() + " Per = " + per.ToString();
 
                if (!Response.IsClientConnected)
                {
                    //Cancel button was clicked or the browser was closed, so stop processing
                    break;
                }
 
                progress.TimeEstimated = (total - i) * 100;
                //Stall the current thread for 0.1 seconds
                System.Threading.Thread.Sleep(100);
            }
        }
        private void UpdateProgress(RadProgressContext progress,int total,int i,int per)
        {
 
                progress.SecondaryTotal = total;
                progress.SecondaryValue = i;               
                progress.SecondaryPercent = per;
        }
    }
}
Hristo Valyavicharski
Telerik team
 answered on 08 Oct 2013
17 answers
906 views
Hi,

I have used two date picker controls in my page.
frequently i am facing problem that date picker does not display image , instead it display text "Open the calender popup" as displayed in attached image.


Radoslav
Telerik team
 answered on 08 Oct 2013
3 answers
138 views
in my radgrid of Job Title, i want to add a checkboxlist to let user check/uncheck the Department Name.
That means the job title belongs to which department.

So I want to databound all department name from table "Department". 
For New Record, it will display all department name.
In Edit Mode, if user already check before, the checkbox will automatically check. How can i use OnDataBound in code behind to databound the checkbox by RadGrid DataKeyNames "ID" ?

It returns the following error when i click Add New/Edit:

 

Server Error in '/LRDB' Application.

The DataSourceID of 'CheckBoxList_Dept' must be the ID of a control of type IDataSource. A control with ID 'LDS_Dept' could not be found.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: The DataSourceID of 'CheckBoxList_Dept' must be the ID of a control of type IDataSource. A control with ID 'LDS_Dept' could not be found.

Source Error:

Line 26: <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel8" runat="server"> Line 27: </telerik:RadAjaxLoadingPanel> Line 28: <telerik:RadGrid ID="RadGrid_JobTitle" runat="server" CellSpacing="0" Line 29: DataSourceID="LDS_JobTitle" width="800" PageSize="15" Line 30: GridLines="None" style="margin-top: 0px" AllowFilteringByColumn="True" 

My code as follows:

<%@ Page Title="" Language="VB" MasterPageFile="~/LRDB.master" AutoEventWireup="false" CodeFile="Admin_dictionary_JobTitle.aspx.vb" Inherits="Admin_Admin_dictionary_JobTitle" %>
 
 
 
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
 
</asp:Content>
 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
 
        <br />
 
        <strong><span class="style4">Job Title</span><br /> </strong><br />
 
        <telerik:RadCodeBlock ID="RadCodeBlock8" runat="server">
 
  <script type="text/javascript">
 
        function RowDblClick(sender, eventArgs) {
        sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());
        }
 
        function conformbox() {
        var con = confirm("Are you sure want to delete?");
        if (con == true) {
  return true;
  }
        else {
  return false;
   }
  }
  </script>
  </telerik:RadCodeBlock>
 
 
 
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel8" runat="server">
 
        </telerik:RadAjaxLoadingPanel>
 
        <telerik:RadGrid ID="RadGrid_JobTitle" runat="server" CellSpacing="0"
        DataSourceID="LDS_JobTitle" width="800"  PageSize="15"
  GridLines="None" style="margin-top: 0px" AllowFilteringByColumn="True"
        AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
        ShowStatusBar="True" AllowAutomaticDeletes="True" AllowAutomaticInserts="false"
        AllowAutomaticUpdates="True">
         <GroupingSettings CaseSensitive="false" />
 
    <MasterTableView AutoGenerateColumns="False"

     DataKeyNames="ID" DataSourceID="LDS_JobTitle"

     AllowFilteringByColumn="False" AllowPaging="False"

     CommandItemDisplay="Top" OverrideDataSourceControlSorting="true" >

      <CommandItemSettings ExportToPdfText="Export to PDF" />

      <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"
       Visible="True">

      </RowIndicatorColumn>

      <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"
       Visible="True">

      </ExpandCollapseColumn>

      <Columns>

       <telerik:GridEditCommandColumn UniqueName="EditCommandColumn" HeaderStyle-Width="50">

       </telerik:GridEditCommandColumn>

       <telerik:GridBoundColumn DataField="ID"
        FilterControlAltText="Filter ID column" HeaderText="ID"
        SortExpression="ID" UniqueName="ID" Visible="false">

       </telerik:GridBoundColumn>

       <telerik:GridBoundColumn DataField="Job_Title_ShortName"

        FilterControlAltText="Filter Job_Title_ShortName column" HeaderText="Short Name"

        SortExpression="Job_Title_ShortName" UniqueName="Job_Title_ShortName" HeaderStyle-Width="200">

       </telerik:GridBoundColumn>

       <telerik:GridBoundColumn DataField="Job_Title"

        FilterControlAltText="Filter Job_Title column" HeaderText="Long Name"

        SortExpression="Job_Title" UniqueName="Job_Title">

       </telerik:GridBoundColumn>

      </Columns>

      <EditFormSettings EditFormType="Template">

       <EditColumn FilterControlAltText="Filter EditCommandColumn1 column"

        UniqueName="EditCommandColumn1">

       </EditColumn>

      <FormTemplate>

 

   <table id="Table2" cellspacing="2" cellpadding="1" width="50%" border="1" rules="none"

    style="border-collapse: collapse;">

    <tr class="EditFormHeader">

    <td style="width:150px">

    <asp:Label ID="lb" Text="Short Name" runat="server"></asp:Label>                                                           

    </td>

    <td>

    <asp:TextBox ID="tb_job_title_ShortName" runat="server" Text='<%# Bind("job_title_ShortName") %>' TabIndex="2"></asp:TextBox>                                                           

    </td>

    </tr>

    <tr >

    <td >

    <asp:Label ID="Label2" Text="Long Name" runat="server"></asp:Label>                                                           

    </td>

    <td>

    <asp:TextBox ID="tb_job_title" runat="server" Text='<%# Bind("job_title") %>' TabIndex="2"></asp:TextBox>                                                           

    </td>

    </tr>

    <tr >

    <td >

    <asp:Label ID="Label1" Text="Department" runat="server"></asp:Label>                                                           

    </td>

    <td>

     <asp:CheckBoxList ID="CheckBoxList_Dept" runat="server"

      AutoPostBack="True"                                                       

      OnDataBound="CheckBoxList_Dept_DataBound" DataSourceID="LDS_Dept"

      DataTextField="Department" DataValueField="DeptID"  TabIndex="1"

      RepeatColumns="8" >

     </asp:CheckBoxList>

     <asp:LinqDataSource ID="LDS_Dept" runat="server"

     ContextTypeName="dcLRDBDataContext" EntityTypeName=""                                                                

     TableName="db_Departments">

     </asp:LinqDataSource>

    </td>

    </tr>

 

 

       <tr>

     <td align="right" colspan="2">

      <asp:Button ID="btnUpdate" Text='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "Insert", "Update") %>'

       runat="server" CommandName='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "PerformInsert", "Update")%>' >

      </asp:Button>

      <asp:Button ID="btnDelete" Text="Delete" runat="server" CausesValidation="False"

       CommandName="Delete" OnClientClick="return conformbox();"   ></asp:Button>

      <asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False"

       CommandName="Cancel"></asp:Button>

     </td>

    </tr>

   </table>

  </FormTemplate>

 </EditFormSettings>

      <PagerStyle PageSizeControlType="RadComboBox" />

     </MasterTableView>

     <PagerStyle PageSizeControlType="RadComboBox" />

     <FilterMenu EnableImageSprites="False">

     </FilterMenu>

 

   </telerik:RadGrid>

                 <asp:LinqDataSource ID="LDS_JobTitle"

  runat="server" ContextTypeName="dcLRDBDataContext" EntityTypeName=""

  TableName="db_Dictionary_Job_Titles">

 </asp:LinqDataSource>
 
 
 
</asp:Content>


Code Behind:

Imports System
Imports System.IO
Imports Telerik.Web.UI
Imports System.Web.UI
Imports Telerik.Web.UI.AsyncUpload
Imports System.Runtime.Serialization.Json
Imports System.Web.Services
Imports System.Runtime.Serialization
Imports System.Collections.Generic
Imports System.Drawing
Partial Class Admin_Admin_dictionary_JobTitle
    Inherits System.Web.UI.Page
    Protected Sub RadGrid_JobTitle_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid_JobTitle.ItemCommand
        RadGrid_JobTitle.MasterTableView.ClearEditItems()
 
        If e.CommandName = RadGrid.InitInsertCommandName Then   'Click Add New Record button           
            Dim editColumn As GridEditCommandColumn = CType(RadGrid_JobTitle.MasterTableView.GetColumn("EditCommandColumn"), GridEditCommandColumn)
            editColumn.Visible = False
        ElseIf (e.CommandName = RadGrid.RebindGridCommandName AndAlso e.Item.OwnerTableView.IsItemInserted) Then
            e.Canceled = True
        Else
            Dim editColumn As GridEditCommandColumn = CType(RadGrid_JobTitle.MasterTableView.GetColumn("EditCommandColumn"), GridEditCommandColumn)
            If Not editColumn.Visible Then  'Click Cancel button (both Insert and Update mode)
                editColumn.Visible = True
            End If
 
            Dim txt_job_title_ShortName As TextBox = DirectCast(e.Item.FindControl("tb_job_title_ShortName"), TextBox)
            Dim txt_job_title As TextBox = DirectCast(e.Item.FindControl("tb_job_title"), TextBox)
 
            Dim dc As New dcLRDBDataContext
 
            If e.CommandName = "PerformInsert" Then
 
                Dim newRecord1 As New db_Dictionary_Job_Title
                dc.db_Dictionary_Job_Titles.InsertOnSubmit(newRecord1)
                newRecord1.Job_Title_shortname = txt_job_title_ShortName.Text
                newRecord1.Job_Title = txt_job_title.Text
 
                newRecord1.LastUpdateDate = DateTime.Now
                newRecord1.LastUpdateBy = HttpContext.Current.Session("UserID")
                dc.SubmitChanges()
 
                RadGrid_JobTitle.MasterTableView.ClearEditItems()
                RadGrid_JobTitle.DataBind()
 
            ElseIf e.CommandName = "Update" Then
                Dim lid As Integer = e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("ID")
 
                Dim rec = (From p In dc.db_Dictionary_Job_Titles Where p.ID = lid).FirstOrDefault
                If Not rec Is Nothing Then
                    rec.Job_Title_shortname = txt_job_title_ShortName.Text
                    rec.Job_Title = txt_job_title.Text
 
                    rec.LastUpdateBy = HttpContext.Current.Session("UserID")
                    rec.LastUpdateDate = DateTime.Now
                    dc.SubmitChanges()
                End If
 
                RadGrid_JobTitle.MasterTableView.ClearEditItems()
                RadGrid_JobTitle.DataBind()
            ElseIf e.CommandName = "Delete" Then
                Dim lid As Integer = e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("ID")
 
                Dim chk_rec = (From a In dc.db_Competency_Lists Where a.Job_Title_ID = lid).Count
                If chk_rec > 0 Then
                    Page.ClientScript.RegisterStartupScript(Page.GetType(), "MessageBox", "alert('Cannot delete because this dictionary had been used.');", True)
                Else
 
                    Dim chk_rec2 = (From a In dc.db_Employee_Details Where a.Job_Title_ID = lid).Count
                    If chk_rec2 > 0 Then
                        Page.ClientScript.RegisterStartupScript(Page.GetType(), "MessageBox", "alert('Cannot delete because this dictionary had been used.');", True)
                    Else
 
                        Dim rec2 = (From p In dc.db_Dictionary_Job_Titles Where p.ID = lid).FirstOrDefault
                        If Not IsNothing(rec2) Then
                            dc.db_Dictionary_Job_Titles.DeleteOnSubmit(rec2)
                            dc.SubmitChanges()
                        End If
 
                    End If
 
                End If
 
 
                RadGrid_JobTitle.MasterTableView.ClearEditItems()
                RadGrid_JobTitle.DataBind()
            End If
 
            dc.Dispose()
        End If
    End Sub
 
    Protected Sub CheckBoxList_Dept_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
 
    End Sub
End Class

Thanks






Shinu
Top achievements
Rank 2
 answered on 08 Oct 2013
3 answers
352 views
  The type or namespace name 'GridDataItem' could not be found (are you missing a using directive or an assembly reference?)  
what is the name of its class or namespace and how can i get it
thank you

Shinu
Top achievements
Rank 2
 answered on 08 Oct 2013
1 answer
105 views

      Hi,
          How shall I make the last item in combobox selected which is binded with sqldatasource.

   thanks
   Savyo
Shinu
Top achievements
Rank 2
 answered on 08 Oct 2013
1 answer
87 views
Hello,
How can i use telerik RibbonBar in SharePoint 2013?
I want to add RibbonBar on sharepoint page, 
Can i create ribbonBar in codeBehind file?

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"
  <div class="Ribbon">
        <telerik:RadRibbonBar runat="server">
            <telerik:RadComboBox runat="server">....</telerik:RadComboBox>
        </telerik:RadRibbonBar>
    </div>
......
</asp:Content>
Dmitriy
Top achievements
Rank 1
 answered on 08 Oct 2013
1 answer
153 views
Hey Telerik,

We are looking for a solution to convert web form ASP.NET to MVC ASP.NET.
There are a lot telerik ASP.NET AJAX controls are used in our web form ASP.NET application like RadGrid\RadComboBox\RadAjaxManager\RadAjaxLoadingPanel\RadListBox......

Can we convert the telerik ASP.NET AJAX control to ASP.NET MVC control?

Thanks in Advance!
Jennifer
Jennifer
Top achievements
Rank 1
 answered on 07 Oct 2013
Narrow your results
Selected tags
Tags
+? more
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?