Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
303 views
Hi,

Is there a better way to access the litConnected from the the ItemDataBound event, I don“t like the concept to calculate stuff to make it work, must be a better way?


<telerik:RadGrid ID="activeGrid" runat="server" OnItemDataBound="activeGrid_ItemDataBound" AutoGenerateColumns="false"  EnableAjaxSkinRendering="true" EnableAjax="true">
                <MasterTableView Name="active">
                    <Columns>
                        <telerik:GridBoundColumn DataField="name" HeaderText="Name" />
                        <telerik:GridBoundColumn DataField="thingie" HeaderText="Thing2" />
                        <telerik:GridTemplateColumn>
                            <ItemTemplate>
                                <asp:Literal runat="server" ID="litConnected" />
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>
                    </Columns>
                    <NestedViewTemplate>
                       Here be things..
                    </NestedViewTemplate>
                </MasterTableView>
</telerik:RadGrid>
protected void activeGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
   if(e.Item.ItemType != GridItemType.NestedView)
         return;
   var litConnected = activeGrid.MasterTableView.Items[e.Item.RowIndex / 3 - 1].FindControl("litConnected") as Literal;
 
}

kiteloop
Top achievements
Rank 1
 answered on 25 Aug 2010
1 answer
56 views
I was wondering if the datagrid control can have following features:

When viewing data in a grid, the requirement is to allow users to customize and store the settings as their default view. The user should be able to –
• Select columns to view
• Select column Sequence
• Select default sort column
• Store the setting (as a view) and use it on next visit.
• Allow multiple such views to be stored for a user.

I would appreciate any feedback.

cheers
Tsvetina
Telerik team
 answered on 25 Aug 2010
2 answers
159 views
All I want to do, is to get a values from a grid when it is not in edit mode. Note that I'm able to get two of the values (both the int32 fields), but I cannot get a reference to the "IsActive" Checkbox or the string "Delimiter" field.

Please let me know how I can accomplish this. Below is my code-behind. Notice the boldfaced fields I can't get...

protected void itemUp_Click(object sender, ImageClickEventArgs e)
        {
            ImageButton imgB = (ImageButton)sender;
            GridDataItem dataItem = (GridDataItem)imgB.NamingContainer;
           
           
            string IsActive = dataItem["IsActive"].Text.ToString();
            if (IsActive == "1")
            {
                Int32 mapID = Int32.Parse(dataItem["Mapid"].Text.ToString());
                Int32 fTypeID = Int32.Parse(dataItem["FileTypeID"].Text.ToString());
                string Delimiter = dataItem["Delimiter"].Text.ToString();

                if (fTypeID == 1)
                    Response.Redirect("~/mapping/mapping.aspx?id=" + mapID.ToString());
                else
                    Response.Redirect("~/mapping/mappingDelimiter.aspx?id=" + mapID.ToString() + "&Del=" + Delimiter.ToString() + "&Ftype=" + fTypeID.ToString());
            }
            else
            {
                String s = "alert('This item must be set to Active before any processing is done with it!');";
                ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "alert", s, true);
            }

Below, is my markup. Once again, notice the boldfaced fields:
<telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" AllowSorting="True"
                            OnNeedDataSource="RadGrid1_NeedDataSource" OnUpdateCommand="RadGrid1_UpdateCommand"
                            OnInsertCommand="RadGrid1_InsertCommand" Skin="Outlook" AutoGenerateColumns="false">
                            <MasterTableView Width="100%" DataKeyNames="Mapid" AutoGenerateColumns="false" CommandItemDisplay="Top"
                                EditMode="EditForms">
                                <Columns>
                                    <telerik:GridEditCommandColumn UniqueName="EditCommandColumn">
                                    </telerik:GridEditCommandColumn>
                                 
                                    <telerik:GridTemplateColumn HeaderText="Multi Rec" SortExpression="IsMultiRecordType"
                                        UniqueName="IsMultiRecordType">
                                        <ItemTemplate>
                                            <asp:CheckBox ID="chkIsMultiRecordType" runat="server" Checked='<%# Bind("IsMultiRecordType") %>' Enabled="false" />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:CheckBox ID="IsMultiRecordType" runat="server" AutoPostBack="true" OnCheckedChanged="IsMultiRecordType_OnCheckedChanged"
                                                Checked='<%# NFE.Common.Classes.UIUtilities.getCheckedValue(Eval( "IsMultiRecordType" )) %>' />
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="File Type" SortExpression="fileType" UniqueName="validationType">
                                        <ItemTemplate>
                                            <asp:Label ID="lblFileType" runat="server" Text='<%# Bind("fileType") %>' />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:DropDownList ID="FileTypeID" runat="server" DataSourceID="LinqFileTypeID" DataTextField="Description"
                                                AppendDataBoundItems="true" DataValueField="FileTypeID" AutoPostBack="true" OnSelectedIndexChanged="FileTypeID_SelectedIndexChanged"
                                                SelectedValue='<%# Bind("FileTypeID") %>'>
                                                <asp:ListItem Selected="True" Text="Select" Value=""></asp:ListItem>
                                            </asp:DropDownList>
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="Start Position" SortExpression="RecordIndicatorStartPosition"
                                        UniqueName="RecordIndicatorStartPosition">
                                        <ItemTemplate>
                                            <asp:Label ID="lblStartPosition" runat="server" Text='<%# Bind("RecordIndicatorStartPosition") %>' />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="StartPosition" runat="server" Text='<%# Eval("RecordIndicatorStartPosition") %>'>
                                            </asp:TextBox>
                                            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Start Position must be numeric"
                                                ControlToValidate="StartPosition" Font-Bold="true" ValidationExpression="^[1-9]+[0-9]*$"></asp:RegularExpressionValidator>
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="End Position" SortExpression="RecordIndicatorEndPosition"
                                        UniqueName="RecordIndicatorEndPosition">
                                        <ItemTemplate>
                                            <asp:Label ID="lblEndPosition" runat="server" Text='<%# Bind("RecordIndicatorEndPosition") %>' />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="EndPosition" runat="server" Text='<%# Eval("RecordIndicatorEndPosition") %>'>
                                            </asp:TextBox>
                                            <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="End Position must be numeric"
                                                ControlToValidate="EndPosition" Font-Bold="true" ValidationExpression="^[1-9]+[0-9]*$"></asp:RegularExpressionValidator>
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="Delimiter" SortExpression="Delimiter" UniqueName="Delimiter">
                                        <ItemTemplate>
                                            <asp:Label ID="lblDelimiter" runat="server" Text='<%# Bind("Delimiter") %>' />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="Delimiter" runat="server" MaxLength="1" Text='<%# Bind("Delimiter") %>' />
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="First Rec Indicator" SortExpression="FirstRecordIndicator"
                                        UniqueName="FirstRecordIndicator">
                                        <ItemTemplate>
                                            <asp:Label ID="lblFirstRecordIndicator" runat="server" Text='<%# Bind("FirstRecordIndicator") %>' />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:TextBox ID="FirstRecordIndicator" runat="server" Text='<%# Bind("FirstRecordIndicator") %>' />
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="Test/Prod" SortExpression="MapStatus" UniqueName="MapStatus">
                                        <ItemTemplate>
                                            <asp:Label ID="lblStatus" runat="server" Text='<%# Bind("MapStatus") %>' />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:DropDownList ID="MapStatusID" runat="server" DataSourceID="LinqMapStatusID"
                                                DataTextField="Description" AppendDataBoundItems="true" DataValueField="mapStatusID"
                                                SelectedValue='<%# Bind("MapStatusID") %>'>
                                                <asp:ListItem Selected="True" Text="Select" Value=""></asp:ListItem>
                                            </asp:DropDownList>
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="IsActive" SortExpression="IsActive" UniqueName="IsActive">
                                        <ItemTemplate>
                                            <asp:CheckBox ID="chkIsActive" runat="server" Checked='<%# Bind("IsActive") %>' Enabled="false" />
                                        </ItemTemplate>
                                        <EditItemTemplate>
                                            <asp:CheckBox ID="IsActive" runat="server" Checked='<%# NFE.Common.Classes.UIUtilities.getCheckedValue(Eval( "IsActive" )) %>' />
                                        </EditItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridTemplateColumn HeaderText="" UniqueName="idM">
                                        <ItemTemplate>
                                            <asp:ImageButton ID="mDetail" runat="server" ImageUrl="~/images/campaign.gif" OnClick="itemUp_Click"
                                                ToolTip="Detail Map" />
                                        </ItemTemplate>
                                    </telerik:GridTemplateColumn>
                                    <telerik:GridBoundColumn DataField="Mapid" HeaderText="Mapid" HtmlEncode="true" SortExpression="Mapid"
                                        UniqueName="Mapid" Visible="false" ReadOnly="true">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn DataField="FileTypeID" HeaderText="FileTypeID" HtmlEncode="true"
                                        SortExpression="FileTypeID" UniqueName="FileTypeID" Visible="false" ReadOnly>
                                    </telerik:GridBoundColumn>
                                </Columns>
                            </MasterTableView>
                            <HeaderStyle Font-Bold="True"></HeaderStyle>
                            <ClientSettings EnableRowHoverStyle="True">
                            </ClientSettings>
                        </telerik:RadGrid>

Bill
Top achievements
Rank 2
 answered on 25 Aug 2010
6 answers
138 views
Good morning.  How do I prevent a user from clicking on the dates within RadScheduler? That is, how do I remove the clickability of the dates?  Thanks.
Chris
Top achievements
Rank 1
 answered on 25 Aug 2010
2 answers
150 views

Hi,

I have a radgrid with a MasterTableView that has a GridTemplateColumn. Insidt the GridTemplateColumn is an asp.net radiobuttonlist. How can I initialize the selected index from the database before the details page displays? The radiobuttonlist selectedIndex cannot be bound declaratively on the aspx page

Thanks
Dan

Dan
Top achievements
Rank 1
 answered on 25 Aug 2010
1 answer
257 views
Hi,

I am using two instances of same user control, but this user control does not work properly.
when i am using single instance of this user control it works properly.
In this user control, i have used rad window and RadAjaxManagerProxy control.
In single instance scenario, rad window works properly means it was close properly on cancel button and
shows ajaxloadingpanel on OK button during processing, but when i am using the same user control with multiple instances then rad window does not work properly.
I have added source code of this user control and aspx page.
Please suggest me the solution.



thanks



This is source of "Picker.ascx" user control


<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Picker.ascx.cs" Inherits="Picker" %>
<%@ Register Assembly="Telerik.Web.UI, Version=2010.1.519.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
 
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
 
    <AjaxSettings >
        <telerik:AjaxSetting AjaxControlID ="gvPeoplePicker">
            <UpdatedControls >
                <telerik:AjaxUpdatedControl ControlID ="gvPeoplePicker" LoadingPanelID ="AjaxLoadingPnl" />
            </UpdatedControls>
        </telerik:AjaxSetting>
         
        <telerik:AjaxSetting  AjaxControlID ="btnOK">
            <UpdatedControls >
                <telerik:AjaxUpdatedControl ControlID ="gvPeoplePicker" LoadingPanelID ="AjaxLoadingPnl" />
            </UpdatedControls>
        </telerik:AjaxSetting>
         
        <telerik:AjaxSetting  AjaxControlID ="btnOK">
            <UpdatedControls >
                <telerik:AjaxUpdatedControl ControlID ="txtBoxPicker" />
            </UpdatedControls>
        </telerik:AjaxSetting>
         
    </AjaxSettings>
     
</telerik:RadAjaxManagerProxy>
 
 
<div nowrap>
    <table>
        <tr>
            <td>
                <telerik:RadTextBox ID="txtBoxPicker" runat="server">
                </telerik:RadTextBox>
            </td>
            <td>
                <asp:Button ID="btnOpenPicker" runat="server" Text="..."  OnClientClick="return false;" />
            </td>
        </tr>
    </table>
</div>
 
 
<telerik:RadAjaxLoadingPanel ID="AjaxLoadingPnl" runat="server" Skin="Default">
</telerik:RadAjaxLoadingPanel>
 
<telerik:RadWindow ID="WndPicker" runat="server" OpenerElementID ="<%# btnOpenPicker.ClientID %>"
    Height="520" Width ="858" Behaviors ="Close,Move" Modal ="true" VisibleStatusbar ="false" 
    ReloadOnShow ="true"  ShowContentDuringLoad="false" DestroyOnClose ="true">
   <ContentTemplate >
       <table width="100%">
           <tr>
               <td nowrap style="border-bottom: solid 1px lightgray; height: 40px; vertical-align: middle">
                   <table>
                       <tr>
                           <td valign="middle" style="vertical-align: middle">
                               <asp:Image ID="imagePeople" runat="server" ImageUrl="~/Images/1278314238_people.png"
                                   Height="30px" Width="30px" />
                           </td>
                           <td valign="middle" style="vertical-align: middle">
                                <asp:Label ID="lblMsg" runat="server" Text="Search for people from the database."
                                   Font-Names="Arial" Font-Size="8.5pt" ForeColor="Gray"></asp:Label>
                           </td>
                       </tr>
                   </table>
               </td>
           </tr>
       </table>
        
       <table width="100%">
           <tr>
               <td nowrap>
                   <telerik:RadGrid ID="gvPeoplePicker" runat="server" ShowHeader="true" EnableLinqExpressions="false"
                       AutoGenerateColumns="false" GridLines="Horizontal" AllowFilteringByColumn="true"
                       Width="100%" AllowPaging ="false" >
                       <MasterTableView ShowHeadersWhenNoRecords="true">
                           <Columns>
                               <telerik:GridBoundColumn HeaderText="Employee ID" UniqueName="EmployeeID" DataType="System.Int32">
                               </telerik:GridBoundColumn>
                                
                               <telerik:GridBoundColumn HeaderText="Department">
                               </telerik:GridBoundColumn>
                                
                               <telerik:GridBoundColumn HeaderText="Branch" DataType="System.String">
                               </telerik:GridBoundColumn>
                                            
                               <telerik:GridBoundColumn HeaderText="Nationality" DataField="Nationality" DataType="System.String">
                               </telerik:GridBoundColumn>
                                
                               <telerik:GridBoundColumn HeaderText="Gender" DataField="Gender" DataType="System.String">
                               </telerik:GridBoundColumn>
                           </Columns>
                       </MasterTableView>
                       <ClientSettings>
                           <Scrolling AllowScroll="true" ScrollHeight="300px" UseStaticHeaders="true" />
                           <Resizing AllowColumnResize="true" />
                       </ClientSettings>
                   </telerik:RadGrid>
               </td>
           </tr>
           <tr>
               <td>
                     
               </td>
           </tr>
           <tr>
               <td align="right">
                   <asp:Button ID="btnOK" runat="server" Text="OK" Width="70px" OnClick="btnOK_Click" />
                     
                   <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClientClick="CloseWnd();return false;" />
                    
               </td>
           </tr>
           <tr>
               <td>
                        
               </td>
           </tr>
       </table>
   </ContentTemplate>
</telerik:RadWindow>
 
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
 
<script language ="javascript" type ="text/javascript"  >
     
    function CloseWnd() {
        $find("<%=WndPicker.ClientID%>").close();
        return false;
    }
 
</script>
</telerik:RadCodeBlock>


This is code behind code of "Picker.ascx.cs"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data ;
using System.Data.SqlClient  ;
using Telerik.Web .UI ;

public partial class Picker : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        gvPeoplePicker.DataSource = string.Empty;
    }

    protected void btnOK_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
        txtBoxPicker.Text = "Result.";

        ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "", "CloseWnd();", true);
    }
}


Source of "Default.aspx" file. This aspx page contain single instance of user control.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="Telerik.Web.UI, Version=2010.1.519.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
    Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
    
<%@ Register src="Picker.ascx" tagname="Picker" tagprefix="uc1" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    </telerik:RadAjaxManager>
    
    <div>
    Single Instance
    <uc1:Picker ID="Picker1" runat="server" />
    
     </div>
     
     <br />
     <br />
     
    <asp:Button ID="Button1" runat="server" Text="Page 2" onclick="Button1_Click" />
    </form>
</body>
</html>

Code behind code of "Default.aspx.cs" file.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default2.aspx");  
    }
}


code of "Default2.aspx" file. This page contain multiple instance of same user control.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<%@ Register Assembly="Telerik.Web.UI, Version=2010.1.519.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
    Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register src="Picker.ascx" tagname="Picker" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    </telerik:RadAjaxManager>
    
    <div nowrap>
    User Control (1st Instance) <uc1:Picker ID="Picker1" runat="server" />
    </div>
    
    <br />
    
    <div nowrap>
        User Control (2nd Instance) <uc1:Picker ID="Picker2" runat="server" />
    </div>
    </form>
</body>
</html>






Fiko
Telerik team
 answered on 25 Aug 2010
3 answers
116 views
Hello there.

I need a point/push in the right direction.

I have a radgrid that is quite wide (well, the width and number of columns is dependent upon preferences but that's another matter) i.e., it has the potential for being up to 35 columns across...phew!!

Can someone recommend how I can go about styling, amending the rad grid so that the columns are grouped. Is it even possible?

So for example, I have the t1 with the following.

Col1, Col2, Col3, Col4.

Is it possible to show the table so that Col1 & Col2 are grouped (i.e. not shown in their entirity) but still showing Col 3 & Col 4.

Any helps or pushes in the right direction, greatly appreciated.
Dimo
Telerik team
 answered on 25 Aug 2010
1 answer
103 views
i am having issues with the ToolTipManager and the AjaxManager.  I followed the example below:

http://demos.telerik.com/aspnet-ajax/tooltip/examples/targetcontrolsandajax

However, the only way i can get my page to work is to set EnableAjax=false on the AjaxManager.  thus, everything seems to be wired up correctly, but the tooltip does not fire when ajax is enabled.

any suggestions on what i should be checking here?

thanks, rick..
Fiko
Telerik team
 answered on 25 Aug 2010
3 answers
129 views
I have a asp.net page built using radtabstrips, radmultipage and pageviews. I use an RadAjaxManager for updating my controls. I would like to place a radupload control on one of my pages, but I can not get the control to fire the validatingfile event when I upload the file. I have tried going into the ajax manager and setting the upload control as both the initiatior and the handled control, but this does not work.

If I move the control to the very bottom of the page where it is outside of all other controls, the event fires. It stops working anytime I place it inside of a multipage. Even if I wrap this in a panel and use the ajax manager to hide and show the panel, the upload quits working here also.

Any ideas on how to get this control to work inside of the page?
Cori
Top achievements
Rank 2
 answered on 25 Aug 2010
4 answers
124 views

The following example : http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridandradasyncupload/defaultcs.aspx?product=upload
does not appear to work as expected.
If you attempt to upload an invalid file type, you correctly get the error message, but removing the invalid file does not remove the error message, and you can no longer upload a valid file.

Try this:
Click on Add New Record
Select a word doc to upload.
the doc will appear with an red exclamation next to it and an error message appears below.
Remove the file, and attempt to upload a valid gif file, nothing happens. the form continues to think an invalid file is uploaded.
T. Tsonev
Telerik team
 answered on 25 Aug 2010
Narrow your results
Selected tags
Tags
+? more
Top users last month
Hiba
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Max
Top achievements
Rank 1
Veteran
Iron
Alina
Top achievements
Rank 1
Rakhee
Top achievements
Rank 1
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Hiba
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Max
Top achievements
Rank 1
Veteran
Iron
Alina
Top achievements
Rank 1
Rakhee
Top achievements
Rank 1
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?