Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
205 views

Hello..

Telerik version: RadControls for ASP.NET Q3 2007

I have a Grid that is controlled by Ajax.... all worked well until I placed an export button so that the Grid can be exported to Excel. Excel exporting works but other operations on the Grid failed due to a JavaScript error: "object doesn't accept this property or method". When I debug the code, the editor stops at the following instruction:

RadGridNamespace.AsyncRequest('grdUsoOpciones$ctl01$ctl03$ctl01$ctl02','''grdUsoOpciones', event) 

If I issue an alert(RadGridNamespace.AsyncRequest) command in the immediate window, the function code is popped up so it does exist.

Where can be the problem?

This is a JavaScript function I needed to add because of adding the export functionality:

    <script type="text/javascript">  
    function mngRequestStarted(ajaxManager, eventArgs)    
    {    
        if (eventArgs.get_eventTarget().indexOf("btnExport") != -1)  
            eventArgs.set_enableAjax(false);    
    }    
    </script>  
 

This is the Grid defiition:

                    <rad:RadGrid ID="grdUsoOpciones" runat="server" AllowFilteringByColumn="True" AllowPaging="True" 
                        AllowSorting="True" AutoGenerateColumns="False" 
                        GridLines="None" Skin="WebBlue" Width="95%" EnableAJAX="True" EnableAJAXLoadingTemplate="True" OnNeedDataSource="grdUsoOpciones_NeedDataSource" OnItemCommand="grd_ItemCommand" OnItemCreated="grd_ItemCreated">  
                        <ExportSettings OpenInNewWindow="True" FileName="ExportUsoPorOpcion" IgnorePaging="True">  
                        </ExportSettings> 
                        <MasterTableView NoMasterRecordsText="No hay registros que mostrar." CommandItemDisplay="Top">  
                            <RowIndicatorColumn Visible="False">  
                                <HeaderStyle Width="20px" /> 
                            </RowIndicatorColumn> 
                            <ExpandCollapseColumn Resizable="False" Visible="False">  
                                <HeaderStyle Width="20px" /> 
                            </ExpandCollapseColumn> 
                            <Columns> 
                                <rad:GridBoundColumn DataField="Nombre" HeaderText="Nombre" UniqueName="column">  
                                    <ItemStyle Width="75%" /> 
                                </rad:GridBoundColumn> 
                                <rad:GridBoundColumn DataField="Uso" HeaderText="Uso" UniqueName="column1">  
                                    <ItemStyle Width="25%" /> 
                                </rad:GridBoundColumn> 
                            </Columns> 
                            <SortExpressions> 
                                <rad:GridSortExpression FieldName="Uso" SortOrder="Descending" /> 
                            </SortExpressions> 
                            <CommandItemTemplate> 
                                <asp:ImageButton ID="btnExportUsoPorUsuario" runat="server" ImageUrl="~/Private/images/small_xls.gif" CommandName="ExportToExcel" ImageAlign="AbsMiddle" /> 
                            </CommandItemTemplate>                              
                        </MasterTableView> 
                        <HeaderStyle ForeColor="Gainsboro" HorizontalAlign="Center" /> 
                        <PagerStyle HorizontalAlign="Left" Mode="NextPrevAndNumeric" NextPagesToolTip="P&#225;ginas Siguientes" 
                            NextPageToolTip="P&#225;gina Siguiente" PagerTextFormat="Cambiar p&#225;gina: {4} &amp;nbsp;|&amp;nbsp; Mostrando p&#225;gina {0} de {1}, opciones {2} a la {3} de {5}." 
                            PrevPagesToolTip="P&#225;ginas Anteriores" PrevPageToolTip="P&#225;gina Anterior" /> 
                        <ItemStyle HorizontalAlign="Left" /> 
                        <FilterItemStyle HorizontalAlign="Left" /> 
                        <AlternatingItemStyle HorizontalAlign="Left" /> 
                        <ClientSettings> 
                            <ClientEvents OnRequestStart="mngRequestStarted" /> 
                        </ClientSettings> 
                        <CommandItemStyle HorizontalAlign="Right" /> 
                    </rad:RadGrid> 
 

And these are the events I had to implement so that export would work with Ajax:

    protected void grd_ItemCreated(object sender, GridItemEventArgs e)  
    {  
        e.Item.Visible = !_exportExcel || e.Item.ItemType == GridItemType.Header || e.Item.ItemType == GridItemType.AlternatingItem || e.Item.ItemType == GridItemType.Item;  
    }  
    protected void grd_ItemCommand(object source, GridCommandEventArgs e)  
    {  
        _exportExcel = e.CommandName == Telerik.WebControls.RadGrid.ExportToExcelCommandName;  
    }  
 

Any help will be appreciated,

Thanks
Jaime

P.S. after posting this message, and having the script debugger enabled in Internet Explorer, I realized that even Excel exporting works, a JavaScript error is thrown too with the same message. It stops at this line:

<script type="text/javascript">/*<![CDATA[*/window["grdUsoUsuarios"] = new RadGridNamespace.RadGrid( {ID:"grdUsoUsuarios",GroupingSettings:{CollapseTooltip:"Collapse group",ExpandTooltip:"Expand group"},HierarchySettings:{CollapseTooltip:"Collapse",ExpandTooltip:"Expand"},EnableAJAX:true,FormID:"frmAudit",EnableOutsideScripts:false,Url:"/PortalSecurity/Private/audit.aspx",ClientSettings:{ClientEvents:{OnRequestStart:"mngRequestStarted",OnRequestEnd:"",OnRequestError:"",OnGridCreating:"",OnGridCreated:"",OnGridDestroying:"",OnMasterTableViewCreating:"",OnMasterTableViewCreated:"",OnError:"",OnTableCreating:"",OnTableCreated:"",OnTableDestroying:"",OnColumnCreating:"",OnColumnCreated:"",OnColumnDestroying:"",OnColumnResizing:"",OnColumnResized:"",OnColumnSwapping:"",OnColumnSwapped:"",OnColumnMovingToLeft:"",OnColumnMovedToLeft:"",OnColumnMovingToRight:"",OnColumnMovedToRight:"",OnColumnHiding:"",OnColumnHidden:"",OnColumnShowing:"",OnColumnShowed:"",OnRowCreating:"",OnRowCreated:"",OnRowDestroying:"",OnRowResizing:"",OnRowResized:"",OnRowHiding:"",OnRowHidden:"",OnRowShowing:"",OnRowShowed:"",OnRowClick:"",OnRowDblClick:"",OnColumnClick:"",OnColumnDblClick:"",OnRowSelecting:"",OnRowSelected:"",OnRowDeselecting:"",OnRowDeselected:"",OnRowMouseOver:"",OnRowMouseOut:"",OnColumnMouseOver:"",OnColumnMouseOut:"",OnColumnContextMenu:"",OnRowContextMenu:"",OnScroll:"",OnKeyPress:"",OnHierarchyExpanding:"",OnHierarchyExpanded:"",OnHierarchyCollapsing:"",OnHierarchyCollapsed:"",OnGroupExpanding:"",OnGroupExpanded:"",OnGroupCollapsing:"",OnGroupCollapsed:"",OnActiveRowChanging:"",OnActiveRowChanged:"",OnRowDeleting:"",OnRowDeleted:"",OnFilterMenuShowing:""},Selecting:{EnableDragToSelectRows:true,AllowCellSelect:false,AllowMultiCellSelect:false,AllowRowSelect:false,AllowColumnSelect:false,AllowMultiColumnSelect:false,IsSet:false},ClientMessages:{DropHereToReorder:"Drop here to reorder",DragToGroupOrReorder:"Drag to group or reorder",DragToResize:"Drag to resize",PagerTooltipFormatString:"Page: <b>{0}</b> out of <b>{1}</b> pages"},Scrolling:{AllowScroll:false,ScrollHeight:"300px",ScrollWidth:"",ScrollBarWidth:"",ScrollTop:"",AJAXScrollTop:"",ScrollLeft:"",UseStaticHeaders:false,SaveScrollPosition:true,EnableAJAXScrollPaging:false,FrozenColumnsCount:0},Resizing:{AllowColumnResize:false,AllowRowResize:false,ResizeGridOnColumnResize:false,ClipCellContentOnResize:true,EnableRealTimeResize:false},EnablePostBackOnRowClick:false,AllowKeyboardNavigation:false,ApplyStylesOnClient:false,AllowDragToGroup:false,AllowColumnsReorder:false,ReorderColumnsOnClient:false,ColumnsReorderMethod:"Swap",AllowRowHide:false,AllowColumnHide:false,AllowExpandCollapse:false,AllowGroupExpandCollapse:false,EnableClientKeyValues:false,PostBackReferences:{PostBackColumnsReorder:"{RadGridNamespace.AsyncRequest('grdUsoUsuarios','ColumnsReorder', 'grdUsoUsuarios', event);}",PostBackGroupByColumn:"{RadGridNamespace.AsyncRequest('grdUsoUsuarios','GroupByColumn', 'grdUsoUsuarios', event);}",PostBackUnGroupByExpression:"{RadGridNamespace.AsyncRequest('grdUsoUsuarios','UnGroupByExpression', 'grdUsoUsuarios', event);}",PostBackReorderGroupByExpression:"{RadGridNamespace.AsyncRequest('grdUsoUsuarios','ReorderGroupByExpression', 'grdUsoUsuarios', event);}",PostBackEditRow:"{RadGridNamespace.AsyncRequest('grdUsoUsuarios','EditRow', 'grdUsoUsuarios', event);}"},ActiveRowData:"",Slider:"",PostBackFunction:"RadGridNamespace.AsyncRequest('{0}','{1}', 'grdUsoUsuarios', event)",FirstDataRowClientRowIndex:0,ShouldCreateRows:false},GroupPanel:{GroupPanelItems:[],ClientID:"grdUsoUsuarios_ctl00"},ShowGroupPanel:false,GroupingEnabled:false,MasterTableView: new RadGridNamespace.RadGridTable( {OwnerID:"grdUsoUsuarios",HierarchyLoadMode:"ServerOnDemand",GroupLoadMode:"Server",AllowFilteringByColumn:true,PageSize:10,PageCount:1,TableLayout:"Auto",RenderItemStyle:"",RenderItemStyleClass:"GridRow_WebBlue",RenderGroupHeaderItemStyle:"",RenderGroupHeaderItemStyleClass:"GroupHeader_WebBlue",RenderAlternatingItemStyle:"",RenderAlternatingItemStyleClass:"GridAltRow_WebBlue",RenderEditItemStyle:"",RenderEditItemStyleClass:"GridEditRow_WebBlue",RenderPagerStyle:"",RenderPagerStyleClass:"GridPager_WebBlue",RenderHeaderStyle:"color:Gainsboro;",RenderHeaderStyleClass:"GridHeader_WebBlue",RenderActiveItemStyle:"",RenderActiveItemStyleClass:"ActiveRow_WebBlue",RenderFooterStyle:"",RenderFooterStyleClass:"GridFooter_WebBlue",SelectedItemStyle:"",SelectedItemStyleClass:"SelectedRow_WebBlue",Name:"",ShowHeader:true,RenderColumns:[{ExpandImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/SinglePlus.gif",CollapseImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/SingleMinus.gif",ButtonType:"ImageButton",UniqueName:"ExpandColumn",CurrentFilterFunction:"NoFilter",FilterListOptions:"VaryByDataType",FilterImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/Filter.gif",DataTypeName:"System.String",Visible:false,Display:true,OwnerID:"grdUsoUsuarios_ctl01",ColumnType:"GridExpandColumn",OrderIndex:-1},{Visible:false,UniqueName:"RowIndicator",CurrentFilterFunction:"NoFilter",FilterListOptions:"VaryByDataType",FilterImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/Filter.gif",DataTypeName:"System.String",Display:true,OwnerID:"grdUsoUsuarios_ctl01",ColumnType:"GridRowIndicatorColumn",OrderIndex:-1},{CurrentFilterFunction:"NoFilter",FilterListOptions:"VaryByDataType",FilterImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/Filter.gif",DataTypeName:"System.String",Visible:true,Display:true,OwnerID:"grdUsoUsuarios_ctl01",ColumnType:"GridBoundColumn",OrderIndex:2,UniqueName:"column"},{CurrentFilterFunction:"NoFilter",FilterListOptions:"VaryByDataType",FilterImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/Filter.gif",DataTypeName:"System.Int32",Visible:true,Display:true,OwnerID:"grdUsoUsuarios_ctl01",ColumnType:"GridBoundColumn",OrderIndex:3,UniqueName:"column1"}],CurrentPageIndex:0,ID:"ctl01",HierarchyIndex:"",UID:"grdUsoUsuarios$ctl01",IsItemInserted:false,CommandItemDisplay:"Top",Controls:[{},{}],ClientID:"grdUsoUsuarios_ctl01",Visible:true} ),CurrentPageIndex:0,AllowMultiRowSelection:false,ShowHeader:true,FilterMenu:{Items:[{Selected:false,Text:"Sin filtro",Value:"NoFilter",UID:"grdUsoUsuarios$ctl02$Item0"},{Selected:false,Text:"Contiene",Value:"Contains",UID:"grdUsoUsuarios$ctl02$Item1"},{Selected:false,Text:"No contiene",Value:"DoesNotContain",UID:"grdUsoUsuarios$ctl02$Item2"},{Selected:false,Text:"Comienza con",Value:"StartsWith",UID:"grdUsoUsuarios$ctl02$Item3"},{Selected:false,Text:"Termina con",Value:"EndsWith",UID:"grdUsoUsuarios$ctl02$Item4"},{Selected:false,Text:"Igual",Value:"EqualTo",UID:"grdUsoUsuarios$ctl02$Item5"},{Selected:false,Text:"Distinto",Value:"NotEqualTo",UID:"grdUsoUsuarios$ctl02$Item6"},{Selected:false,Text:"Mayor",Value:"GreaterThan",UID:"grdUsoUsuarios$ctl02$Item7"},{Selected:false,Text:"Menor",Value:"LessThan",UID:"grdUsoUsuarios$ctl02$Item8"},{Selected:false,Text:"Mayor o igual",Value:"GreaterThanOrEqualTo",UID:"grdUsoUsuarios$ctl02$Item9"},{Selected:false,Text:"Menor o igual",Value:"LessThanOrEqualTo",UID:"grdUsoUsuarios$ctl02$Item10"},{Selected:false,Text:"Entre",Value:"Between",UID:"grdUsoUsuarios$ctl02$Item11"},{Selected:false,Text:"No entre",Value:"NotBetween",UID:"grdUsoUsuarios$ctl02$Item12"},{Selected:false,Text:"Vacío",Value:"IsEmpty",UID:"grdUsoUsuarios$ctl02$Item13"},{Selected:false,Text:"Con algo",Value:"NotIsEmpty",UID:"grdUsoUsuarios$ctl02$Item14"},{Selected:false,Text:"Nulo",Value:"IsNull",UID:"grdUsoUsuarios$ctl02$Item15"},{Selected:false,Text:"No sea nulo",Value:"NotIsNull",UID:"grdUsoUsuarios$ctl02$Item16"},{Selected:false,Text:"Custom",Value:"Custom",UID:"grdUsoUsuarios$ctl02$Item17"}],SelectedImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/SelectedMenu.gif",NotSelectedImageUrl:"/PortalSecurity/RadControls/Grid/Skins/WebBlue/NotSelectedMenu.gif",SelectColumnBackColor:"buttonface",TextColumnBackColor:"window",HoverBackColor:"LightSteelBlue",HoverBorderColor:"Navy",CssClass:""},LoadingTemplateTransparency:0,Skin:"WebBlue",AllowFilteringByColumn:true,ClientID:"grdUsoUsuarios",UniqueID:"grdUsoUsuarios"} )/*]]>*/</script>   </div> 

Sebastian
Telerik team
 answered on 29 Sep 2009
5 answers
149 views
I have a RadGrid hierarchy with a MasterTable and a number of DetailTables. Most of the DetailTables display normally as expected.

However, two of the DetailTables as GridTableViews have been disabled with the properties Enabled="false" Visible="false" in the markup of the *.ascx user control with the RadGrid. Even so, they still appear!!!!!  I had the same problem when I tried disabling them in codebehind (remembering to do the rebind in the prerender).

How can this be? Are the Enabled and Visible properties not operational server side in markup or in code-behind? Is it really necessary to disable each of the individual columns in the DetailTable? Is that the only solution? Or is this a bug? And it should be possible to disable the entire DetailTable?
Mira
Telerik team
 answered on 29 Sep 2009
2 answers
109 views
I am trying to enable autocomplete for a combobox and I have 2 columns of data.  I use a template for the columns display as show below.  The problem is that the autocomplete is looking at the second column for the autocomplete but I need it on column 1.  It is also populating the data from column 2 when choosing an option, and I need column 1 value.  

I cant seem to figure out how to force the "NAME" column for this.

                  <telerik:RadComboBox HighlightTemplatedItems="true" DropDownWidth="300" ID="cboLeadComp"
                    runat="server" DataSourceID="SqlDataSource3" DataTextField="NAME" DataValueField="ORGANIZATION_ID"
                     Width="260px" CollapseDelay="100" Font-Size="Small" MarkFirstMatch="True" TabIndex="6">
                    <ItemTemplate>
                      <table style="width: 100%" border="0" cellpadding="0" cellspacing="0">
                        <tr style="height: 5px">
                          <td style="width: 50px; height: 5px" nowrap>
                            <%#DataBinder.Eval(Container.DataItem, "Name")%>
                          </td> 
                          <td nowrap style="height: 5px">
                            <%#DataBinder.Eval(Container.DataItem, "Description")%>
                          </td>                       
                        </tr>
                      </table>
                    </ItemTemplate>
                    <HeaderTemplate>
                      <table style="width: 100%">
                        <tr>
                          <td style="width: 50px;height:5px;font-weight:bold">
                            Name</td>
                          <td style="height: 5px;font-weight:bold">
                            Description</td>
                        </tr>
                      </table>
                    </HeaderTemplate>
                  </telerik:RadComboBox>
Robert
Top achievements
Rank 1
 answered on 29 Sep 2009
1 answer
107 views
Hi
I have a grid that displays some records and user can add new records after clicking add new record from grid header and a new fortemplate defined is displayed to the user as of the following
   <EditFormSettings EditFormType="Template">
                <FormTemplate>
                    <table>
                        <tr>
                            <td>
                                <strong>Description</strong></td>
                            <td>
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="3">
                                <asp:TextBox ID="txtShortDescription" runat="server" Text='<%# Bind( "ShortDescription" ) %>'
                                    Width="750px" Height="70px" TextMode="MultiLine" BackColor="LightYellow"></asp:TextBox>
                                    <br />
                                <asp:RequiredFieldValidator ID="rvGoalAlready" runat="server" ErrorMessage="* Goal already exists" ControlToValidate="txtShortDescription" EnableClientScript="False" ValidationGroup="Desc" style="white-space :nowrap"></asp:RequiredFieldValidator><br />
                                    <asp:RequiredFieldValidator
                                        ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtShortDescription" style="white-space :nowrap"
                                        ErrorMessage="* Goal Description is required" ValidationGroup="Desc"></asp:RequiredFieldValidator></td>
                        </tr>
                        <tr>
                            <td>
                            </td>
                            <td colspan="2">
                            </td>
                        </tr>
                    </table>
                    <table>
                        <tr>
                            <td>
                                <asp:Button ID="btnUpdate" Text='Save & Add Another'
                                    runat="server" CommandName='Insert'
                                    ValidationGroup="Desc" Visible ="false"></asp:Button>
                                <asp:Button ID="btnSaveClose" Text='Save & Close'
                                    runat="server" CommandName="Update"
                                    ValidationGroup="Desc"></asp:Button>
                                <asp:Button ID="btnInsertSaveAndClose" runat="server" CommandArgument="2" CommandName="Insert"
                                    Text="Save & Close" ValidationGroup="Desc" />
                                or
                                <asp:LinkButton ID="LinkButton1" Text="Cancel" runat="server" CausesValidation="False"
                                    CommandName="Cancel" ForeColor="Maroon"></asp:LinkButton>
                            </td>
                        </tr>
                    </table>
                </FormTemplate>

And it displays successfully but my problem is that i want to display records on top and at bottom new form template how can i do this? And what about if records are high and if new template is displayed at bottom the user will not be able to see it so we will need to take the scroll down after new template is shown? Please help me how this can be done?

Regards
Muzaffar Ali



Veli
Telerik team
 answered on 29 Sep 2009
0 answers
109 views
I have a RadTabStrip Control  that has many tabs. all the tables that have lables, checkbox, textbox, etc all work fine.  The pageview that has a RadGrid on is droped to the bellow the tab list.  The labels and text boxes remain in the proper location only the grid moves.
Eric Klein
Top achievements
Rank 1
 asked on 29 Sep 2009
2 answers
84 views
Hello,

I have a radgrid that has a NestedView Template.  Inside that template I have a Placeholder which will be populated by a dynamically created control like a textbox or another radgrid, depending on some logic I have server side.  I would like to have Google-Like filtering in the nested grid, however I don't know how to do it since I don't have a declarative ID for the nested grid that I can use to reference it inside the javascript method needed for such filtering to work.  This is because, in addition that it is programatically created, the grid is also in the nested view of each item (or row) so it does not have an unique ID as would a declaratively declared control would have.

So, is there anyway I can reference such grid from the javascript method that is used in your examples of the Google-Like filtering, in order for such filtering to work on my nested grid?

Any help would be greatly appreciated,
Manuel
Sebastian
Telerik team
 answered on 29 Sep 2009
18 answers
489 views
Guys,

FYI: When trying to install Q1 '09 - 402 version on Visual Studio 2010 Beta 1 i got this error: "Visual Studio is not installed."

Best Regards,

Henrique
Ivo
Telerik team
 answered on 29 Sep 2009
1 answer
102 views
I would like to build a kind of matrix to edit data on a cell per cell basis.

The number of rows and columns will depend on some runtime user choices.
The content of each cell will also depend on these choices. It could be a checkbox, a combobox, some text or number entry, etc.
The type of content will be the same for all cells in one column.

Each cell will have to contain several pieces of data (value, underlying key, small number for optimistic locking, etc) which probably means I won't be able to return my underlying data to the page as a matrix but as a simple "flat" table and I'll have to build the grid cells myself on the fly...

Because I want to edit on a cell by cell basis, I don't want to switch an entire row in edit mode.
I'd rather have small "Edit" "Cancel" "Save" buttons in each cell.


Given that sort of (complex) requirement, would you use a RadGrid?

If the answer is "No" (as I suspect), what kind of control would you suggest, if any?


Thanks

Eric
Princy
Top achievements
Rank 2
 answered on 29 Sep 2009
3 answers
170 views
Hello, i have a simple continents/countries (parent/child) combo box pattern loaded from web service.
When i click the save button the postback occur and the page re-show. The selected items are selected in each dropdown, but no other items are present.

I've decide to do it manualy in javascript with client event and api using event such has "OnClientLoad", "OnClientItemsRequested" and javascript code such has sender.findItemByValue(currentValue), trackChanges, requestItems, commitChanges.

Any simplest way to do this?

Let me know if you want me to provide de complete source code exemple.
Datamex
Top achievements
Rank 2
 answered on 29 Sep 2009
3 answers
267 views
Hi,

Is there any way to edit cell on double click in grid. Whole row should'nt be in edit mode. Only cell should be in edit mode on which i am clicking. Also i don't want to display traditional Edit/Update/Cancel column in grid.

i am comparing RadGrid features with Intersoft WebGrid and i am stuck on this feature whether RadGrid support this or not.

Regards
Devanand Jha



Daniel
Telerik team
 answered on 29 Sep 2009
Narrow your results
Selected tags
Tags
+? more
Top users last month
Simon
Top achievements
Rank 2
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
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?