Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
118 views
In a previous thread people were discussing a problem with 100% height of a RadGrid placed in a RadSplitter.
When using a RadAjaxManager I was forced to include an event like:
    void contentpagecs_aspx_AjaxSettingCreated(object sender, AjaxSettingCreatedEventArgs e) 
    { 
        if (e.Initiator.ID == "GridView") 
        { 
            this.RadGrid1PanelClientID = e.UpdatePanel.ClientID; 
        } 
    } 
 
That solved my problem then. But I still dont really understand what I do when I set the PanelClientID like that.

No I have a Master page with a RadAjaxManager.
I have a WebForm, using that Master Page, containing a RadSplitter and in one of the RadPanes I have a UserControl.
The UserControl contains a RadGrid. The same RadGrid I used before.
In the UserControl I have a RadManagerProxy like:
<telerik:RadAjaxManagerProxy runat="server" ID="RadAjaxProxyGrid"> 
    <AjaxSettings> 
        <telerik:AjaxSetting AjaxControlID="MyGrid"> 
            <UpdatedControls> 
                <telerik:AjaxUpdatedControl ControlID="MyGrid" LoadingPanelID="RadAjaxPanelMaster" /> 
            </UpdatedControls> 
        </telerik:AjaxSetting> 
    </AjaxSettings> 
</telerik:RadAjaxManagerProxy> 

No I have the same problem like before. The RadGrid doesnt fill up the height in the RadPane in the container for my UserControl.
I guess I have to include a AjaxSettingCreated event like before. But how and where?
Can somebody explain in a good pedagogic way for me how to do that, what this solve and how it does that.

/Mathias
Teija
Top achievements
Rank 1
 answered on 22 Dec 2009
2 answers
203 views
Hi
the demo -Grid- MultiColumnEditForm run fine on my computer.
Now I have my own database-Northwind and I want to use sqldatasource instead of sessiondatasource.
I copied all the code into my project except datasource, the error:
Employee 3 cannot be updated. Reason: Must declare the scalar variable "@EmployeeID".
  shows after I click on update.

I searched the internet which normally say that you need to put DataKeyNames="EmployeeID" into grid. I think I have it. so what is wrong?

My code here(I didn't change the insert and delete command code), I did it using wizard before it give me silence to not update( no exception): Thanks for any help.

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">

    <style type="text/css">
        .EditFormHeader td
        {
            background: #dadec8;
            padding: 5px 0px;
        }
        </style>
</head>
<body class="BODY">
    <form runat="server" id="mainForm" method="post" style="width: 100%">
 
        <!-- content start -->
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
        
        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">

            <script type="text/javascript">
            function RowDblClick(sender, eventArgs)
            {
              sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());
            }
            </script>

        </telerik:RadCodeBlock>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadGrid1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                        <telerik:AjaxUpdatedControl ControlID="divMsg" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <div id="divMsg" runat="server" style="float: left;">
            <asp:Label ID="Label1" runat="server" EnableViewState="False" Visible="false"></asp:Label>
        </div>
    <telerik:RadSlider ID="RadSlider1" runat="server">
    </telerik:RadSlider>
        <br />
        <telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" runat="server" ShowStatusBar="True"
            GridLines="None" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
            OnPreRender="RadGrid1_PreRender" AllowAutomaticDeletes="True" AllowAutomaticInserts="True"
            AllowAutomaticUpdates="True" OnItemDeleted="RadGrid1_ItemDeleted"
            OnItemInserted="RadGrid1_ItemInserted"
            OnItemUpdated="RadGrid1_ItemUpdated" >
            <MasterTableView DataKeyNames="EmployeeID" GridLines="None" Width="100%">
                <Columns>
                    <telerik:GridEditCommandColumn UniqueName="EditCommandColumn">
                    </telerik:GridEditCommandColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="Country" HeaderText="Country"
                        DataField="Country" EditFormColumnIndex="1">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="City" HeaderText="City" DataField="City"
                        EditFormColumnIndex="1">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="Region" HeaderText="Region"
                        DataField="Region" EditFormColumnIndex="2">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="TitleOfCourtesy" HeaderText="TOC"
                        DataField="TitleOfCourtesy" EditFormColumnIndex="2">
                        <HeaderStyle Width="60px"></HeaderStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="FirstName" EditFormColumnIndex="0" HeaderText="FirstName"
                        DataField="FirstName">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="LastName" EditFormColumnIndex="0" HeaderText="LastName"
                        DataField="LastName">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn Visible="False" UniqueName="HireDate" EditFormColumnIndex="0"
                        HeaderText="Hire Date" DataField="HireDate">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="Title" EditFormColumnIndex="1" HeaderText="Title"
                        DataField="Title">
                    </telerik:GridBoundColumn>
                </Columns>
                <EditFormSettings ColumnNumber="3" CaptionFormatString="Edit details for employee with ID {0}"
                    CaptionDataField="EmployeeID">
                    <FormTableItemStyle Wrap="False"></FormTableItemStyle>
                    <FormCaptionStyle CssClass="EditFormHeader"></FormCaptionStyle>
                    <FormMainTableStyle GridLines="None" CellSpacing="0" CellPadding="3" Width="100%" />
                    <FormTableStyle GridLines="Horizontal" CellSpacing="0" CellPadding="2" CssClass="module"
                        Height="110px" Width="100%" />
                    <FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle>
                    <FormStyle Width="100%" BackColor="#eef2ea"></FormStyle>
                    <EditColumn UpdateText="Update record" UniqueName="EditCommandColumn1" CancelText="Cancel edit">
                    </EditColumn>
                    <FormTableButtonRowStyle HorizontalAlign="Left" CssClass="EditFormButtonRow"></FormTableButtonRowStyle>
                </EditFormSettings>
                <ExpandCollapseColumn ButtonType="ImageButton" Visible="False" UniqueName="ExpandColumn">
                    <HeaderStyle Width="19px"></HeaderStyle>
                </ExpandCollapseColumn>
            </MasterTableView>
            <ClientSettings>
                <ClientEvents OnRowDblClick="RowDblClick" />
            </ClientSettings>
        </telerik:RadGrid>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConflictDetection="CompareAllValues"
            ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" DeleteCommand="DELETE FROM [Employees] WHERE [EmployeeID] = ? AND [LastName] = ? AND [FirstName] = ? AND [Title] = ? AND [TitleOfCourtesy] = ? AND [BirthDate] = ? AND [HireDate] = ? AND [Address] = ? AND [City] = ? AND [Region] = ? AND [PostalCode] = ? AND [Notes] = ? AND [Country] = ? AND [HomePhone] = ? AND [Extension] = ? AND [ReportsTo] = ?"
            InsertCommand="INSERT INTO [Employees] ([EmployeeID], [LastName], [FirstName], [Title], [TitleOfCourtesy], [BirthDate], [HireDate], [Address], [City], [Region], [PostalCode], [Notes], [Country], [HomePhone], [Extension], [ReportsTo]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
            OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [EmployeeID], [LastName], [FirstName], [Title], [TitleOfCourtesy], [BirthDate], [HireDate], [Address], [City], [Region], [PostalCode], [Notes], [Country], [HomePhone], [Extension], [ReportsTo] FROM [Employees]"
            
            UpdateCommand="UPDATE [Employees] SET [LastName] =@LastName, [FirstName] =@FirstName, [Title] =@Title, [TitleOfCourtesy] =@TitleOfCourtesy, [BirthDate] = @BirthDate, [HireDate] = @HireDate, [Address] =@Address, [City] =@City, [Region] =@Region, [PostalCode] =@PostalCode, [Notes] = @Notes, [Country] =@Country, [HomePhone] = @HomePhone, [Extension] =@Extension, [ReportsTo] = @ReportsTo WHERE [EmployeeID] = @EmployeeID AND [LastName] =LastName AND [FirstName] = @FirstName AND [Title] = @Title AND [TitleOfCourtesy] =@TitleOfCourtesy AND [BirthDate] = @BirthDate AND [HireDate] = @HireDate AND [Address] = @Address AND [City] = @City AND [Region] = @Region AND [PostalCode] = @PostalCode AND [Notes] = @Notes AND [Country] = @Country AND [HomePhone] = @HomePhone AND [Extension] = @Extension AND [ReportsTo] = @ReportsTo">
            <UpdateParameters>
                <asp:Parameter Name="LastName" Type="String" />
                <asp:Parameter Name="FirstName" Type="String" />
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="TitleOfCourtesy" Type="String" />
                <asp:Parameter Name="BirthDate" Type="DateTime" />
                <asp:Parameter Name="HireDate" Type="DateTime" />
                <asp:Parameter Name="Address" Type="String" />
                <asp:Parameter Name="City" Type="String" />
                <asp:Parameter Name="Region" Type="String" />
                <asp:Parameter Name="PostalCode" Type="String" />
                <asp:Parameter Name="Notes" Type="String" />
                <asp:Parameter Name="Country" Type="String" />
                <asp:Parameter Name="HomePhone" Type="String" />
                <asp:Parameter Name="Extension" Type="String" />
                <asp:Parameter Name="ReportsTo" Type="Int32" />
                <asp:Parameter Name="EmployeeID" />
            </UpdateParameters>
     </asp:SqlDataSource>
        <!-- content end -->
      
    </form>
</body>
</html>
Amy Liu
Top achievements
Rank 1
 answered on 22 Dec 2009
6 answers
215 views
Hi,

if a page consist of more then one ascx file containing the code below,
then the correct captcha code can never be entered by the user(isValid allways = false).

<table style="border: solid 1px #323232; background-color: #efefef">  
  <tr valign="bottom">  
    <td colspan="2">  
      <span style="font-weight: bold; font-size: 11px">For en sikkerheds skyld...</span> 
    </td> 
  </tr> 
  <tr valign="bottom">  
    <td style="background-color: #efefef">  
      <telerik:RadCaptcha ID="RadCaptcha1" runat="server" CaptchaImage-RenderImageOnly="true" CaptchaImage-Height="32" 
       CaptchaImage-Width="90" CaptchaImage-TextColor="#323232" CaptchaImage-LineNoise="Low" CaptchaImage-FontWarp="None"
       CaptchaImage-BackgroundColor="#efefef" ErrorMessage="Tast koden igen!" Display="Dynamic" 
       CaptchaTextBoxCssClass="captchaBox"  ImageStorageLocation="Cache" EnableViewState="true">  
      </telerik:RadCaptcha> 
      <div style="padding-bottom: 7px"></div> 
    </td> 
    <td> 
      <asp:TextBox ID="CaptchaInput" runat="server" MaxLength="5" Width="50" Font-Size="13px" BackColor="white">
      </asp:TextBox> 
      <br /> 
      <span style="background-color: #efefef; color: #000">Tast koden</span> 
    </td> 
  </tr> 
</table> 

<asp:Button ID="Tilmeld" OnClick="SendEmailNu" title="Tilmeld" runat="server" CssClass="button" Text="Tilmeld">
</asp:Button> 

Code behind like this:
protected void SendEmailNu(Object sender, EventArgs e)  
  {  
  RadCaptcha1.ValidatedTextBoxID = CaptchaInput.UniqueID;  
  RadCaptcha1.Validate();  
  if (RadCaptcha1.IsValid)  
    {  
 

If only one r.a.d.captcha, with this "external" textbox approace is on the page - then no problem!

Pero
Telerik team
 answered on 22 Dec 2009
8 answers
147 views

I have several places I'd like to call a read-only popup grid, select a row, and return a value to a textbox. I assumed I'd create an ascx file, which would contain a RadWindow, which would contain a RadGrid. I'd call the ascx control, passing it the SQL (to auto-populate the grid), the textbox name to fill on the return, and the column name to return from the selected row.

But while doing this I felt at a loss. (Right now I don't need all the passed in items to work -- I'd be happy just getting a reusable dialog box with a grid to popup). I created an ascx, threw a RadWindow on it (not sure if I should use RadWindoManager) but couldn't place a grid on the RadWindow. I found it uses a NavigateURL, which requires an aspx. So I created an aspx file with a grid and pointed the RadWindow at that... but that's when I began to wonder if I was doing this the wrong way.

With what controls and overall structure would you recommend I do this? I ask because I feel I might be using the wrong tools and/or structure, so I'm hoping for a little direction.

Thanks.
Jeremy Yoder
Top achievements
Rank 1
 answered on 22 Dec 2009
1 answer
114 views
Hi,

I've developed a Grid with the Grid-control. This control has the following ClientSettings;

  • FrozenColumnsCount="3"
  • UseStaticHeaders="true"
  • AllowScroll="true"

When rendered the Grid looks like the attached ExampleGrid.jpg. As you can see there are several TemplateColumns with dates in the header and TextBoxes in the item. When I drag the horizontal scrollbar the first 3 columns stay on their position and the others will scroll as expected.

Now for the problem; when I click in the first textbox on the screen (the one beneath 28-12) and press tab several times the first 3 columns don't stay on their position. See the attached exampleerror.jpg

I've looked throught the examples but this situation (the one with editable controls like textboxes) aren't available. Can you please help me with this?

Regards

Dimo
Telerik team
 answered on 22 Dec 2009
3 answers
95 views
Hi!

I have a RadGrid on my page with two kinds of columns:
- One GridTemplateColumn that holds information about the items such as name and id.
- Numerous of GridButtonColumns, one column for each week for one year a head. These columns is created in the code-behind.
For each item in the grid i display an image in the correct column if a certified statement returns true.

Now for my question: Is it possible to move these images to another cell but in the same row (for the same item). If its possible i would like som kind of event to be triggered so I will be able to perform updates to the database.

Regards,
Johannes
Johannes Arevärn
Top achievements
Rank 1
 answered on 22 Dec 2009
3 answers
213 views
hi

I could not get the title printed on the PDF. How should i go about it? Thanks


Protected Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand
        If e.CommandName = RadGrid.ExportToPdfCommandName Then
            IsPdfExport = True
            RadGrid1.ExportSettings.ExportOnlyData = False
            RadGrid1.ExportSettings.OpenInNewWindow = True
            RadGrid1.ExportSettings.Pdf.PageHeight = Unit.Parse("210mm")
            RadGrid1.ExportSettings.Pdf.PageWidth = Unit.Parse("297mm")
            RadGrid1.ExportSettings.IgnorePaging = True
        End If
    End Sub

 Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated
        If IsPdfExport AndAlso TypeOf e.Item Is GridHeaderItem Then
            RadGrid1.ExportSettings.Pdf.Title = "Unpaid/Partial Payment"
            Dim headerItem As GridHeaderItem = e.Item
            headerItem.Style("horizontal-align") = "left"
            headerItem.Style("font-size") = "10pt"
            headerItem.Style("background-color") = "lightgray"

            For Each cell As TableCell In headerItem.Cells
                cell.Style("text-align") = "left"
            Next
        End If
        If TypeOf e.Item Is GridDataItem Then
            Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)

            For Each cell As TableCell In item.Cells
                cell.Style("text-align") = "left"
                cell.Style("font-size") = "10pt"
                If e.Item.ItemType = GridItemType.AlternatingItem Then
                    e.Item.BackColor = System.Drawing.Color.LightYellow
                End If
            Next
        End If

        If IsPdfExport AndAlso TypeOf e.Item Is GridFooterItem Then
            Dim footerItem As GridFooterItem = e.Item
            footerItem.Style("horizontal-align") = "left"
            footerItem.Style("font-size") = "10pt"

            For Each cell As TableCell In footerItem.Cells
                cell.Style("text-align") = "left"
            Next
        End If
    End Sub

L
Top achievements
Rank 1
 answered on 22 Dec 2009
1 answer
100 views
Hello,
         I want to use xml file as a datasource for the list view. I had an xml file but telerik control crashed. I think it has something to do with multiple root node. Please check the attached file. But I had a clean xml file with just one root node,

<?xml version ="1.0" encoding ="utf-8"?>
<columns>
<column>Name</column>
<column>Short text.</column>>
<column>Long text.</column>>
</columns>

In the layout editor I didnt three columns..  Am I doing anything wrong? Or Is there a tutorial for XML datasource for list view?

Thanks,
Bharani
Rosen
Telerik team
 answered on 22 Dec 2009
1 answer
104 views
hi

im using tabstrip control

and i want to find all controls that my radpageview control use

want to use a same code like this on fiding the control

    Public Sub ImpostaCampiDataBase(ByVal Pagina As Page, ByVal IDWS As String, ByVal NotaMod As String) 
        ' imposta campi data base dalla pagina web 
        TestoMessaggio = "" 
        Dim c As Control 
        Dim childc As Control 
        Dim intc As Integer 
 
        Try 
            For Each c In Pagina.Controls 
                For Each childc In c.Controls 
                    If TypeOf childc Is TextBox Then 
                        If Left(CType(childc, TextBox).ID, 3) = "txt" Then 
                            ReDim Preserve param(intc) 
                            ReDim Preserve paramVal(intc) 
                            param(intc) = Mid(childc.ID, 4) 
                            paramVal(intc) = CType(childc, TextBox).Text 
                            intcintc = intc + 1 
                        End If 
                    ElseIf TypeOf childc Is Telerik.Web.UI.RadTextBox Then 
                        If Left(CType(childc, Telerik.Web.UI.RadTextBox).ID, 3) = "txt" Then 
                            ReDim Preserve param(intc) 
                            ReDim Preserve paramVal(intc) 
                            param(intc) = Mid(childc.ID, 4) 
                            paramVal(intc) = CType(childc, Telerik.Web.UI.RadTextBox).Text 
                            intcintc = intc + 1 
                        End If 
                    ElseIf TypeOf childc Is Telerik.Web.UI.RadDatePicker Then 
                        If Left(CType(childc, Telerik.Web.UI.RadDatePicker).ID, 3) = "rdp" Then 
                            ReDim Preserve param(intc) 
                            ReDim Preserve paramVal(intc) 
                            param(intc) = Mid(childc.ID, 4) 
 
                            If CType(childc, Telerik.Web.UI.RadDatePicker).IsEmpty = True Then 
                                paramVal(intc) = "" 
                            Else 
                                paramVal(intc) = CType(childc, Telerik.Web.UI.RadDatePicker).SelectedDate 
                            End If 
                            intcintc = intc + 1 
                        End If 
 
                    ElseIf TypeOf childc Is Telerik.Web.UI.RadComboBox Then 
                        If Left(CType(childc, Telerik.Web.UI.RadComboBox).ID, 3) = "lst" Then 
                            ReDim Preserve param(intc) 
                            ReDim Preserve paramVal(intc) 
                            param(intc) = Mid(childc.ID, 4) 
                            paramVal(intc) = CType(childc, Telerik.Web.UI.RadComboBox).SelectedValue 
                            intcintc = intc + 1 
                        End If 
                    End If 
                Next 
            Next 
            ReDim Preserve param(intc) 
            ReDim Preserve paramVal(intc) 
            param(intc) = "IDWS" 
            paramVal(intc) = IDWS 
            intcintc = intc + 1 
            ReDim Preserve param(intc) 
            ReDim Preserve paramVal(intc) 
            param(intc) = "NOTAMOD" 
            paramVal(intc) = NotaMod 
 
        Catch _err As Exception 
            TestoMessaggio = "Errore Imposta Campi DataBase - " + _err.Source + "->" + _err.Message 
        End Try 
 
    End Sub 

i hope u will help me

thanks a lot

regards
webster
Shinu
Top achievements
Rank 2
 answered on 22 Dec 2009
6 answers
205 views
Hi all,
i am playing around with the Menu control and ITemplates and am trying to figure out how to control the events fired within the ITemplate class and having it effect the Menu Item that it is in client side.

What i have is a Menu control with two items using my custom ITemplate.  In essence it is a Panel with a small panel within it that i want to be able to click on and have it close the menu item it is in.  It will end up being a menu item that can remove itself from the menu.

class CaseMenuTemplate : ITemplate 
    { 
        public void InstantiateIn(Control container) 
        { 
            Panel pBase = new Panel(); 
            Panel pHeader = new Panel(); 
            Panel pContent = new Panel(); 
 
            pBase.CssClass = "MenuPanelBase"; 
            pHeader.CssClass = "MenuPanelHeader"; 
            pContent.CssClass = "MenuPanelContent"; 
             
            Label lblCase = new Label(); 
            lblCase.ID = "lblCase"; 
            lblCase.Text = "Case:"; 
            lblCase.CssClass = "MenuLabelCase"; 
            pHeader.Controls.Add(lblCase); 
 
            Label lblCaseNumber = new Label(); 
            lblCaseNumber.ID = "lblCaseNumber"; 
            lblCaseNumber.Text = "1234567890"; 
            lblCaseNumber.CssClass = "MenuLabelCaseNumber"; 
            pHeader.Controls.Add(lblCaseNumber); 
 
            Button pClose = new Button(); 
            pClose.CssClass = "MenuCloseButton"; 
             
            pHeader.Controls.Add(pClose); 
 
            pBase.Attributes.Add("onmouseover", "this.className = 'MenuPanelBaseHover';"); 
            pBase.Attributes.Add("onmouseout", "this.className = 'MenuPanelBase';"); 
            pClose.Attributes.Add("onmouseover", "this.className = 'MenuCloseButtonHover';"); 
            pClose.Attributes.Add("onmouseout", "this.className = 'MenuCloseButton';"); 
            pClose.Attributes.Add("onclick", "deleteItem(this);return false;"); 
 
            container.Controls.Add(pBase); 
            pBase.Controls.Add(pHeader); 
            pBase.Controls.Add(pContent); 
 
        } 


I have the ITemplate control loading as expected, but i cannot find out how to, on the onclick event of the panel, have the menu remove the parent item from iteself.

suggestions?
Jordan
Yana
Telerik team
 answered on 22 Dec 2009
Narrow your results
Selected tags
Tags
+? more
Top users last month
Tien
Top achievements
Rank 1
Iron
Krasimir
Top achievements
Rank 3
Bronze
Iron
Iron
Cedar
Top achievements
Rank 1
Iron
Emil
Top achievements
Rank 1
Iron
Kyle Watson
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Tien
Top achievements
Rank 1
Iron
Krasimir
Top achievements
Rank 3
Bronze
Iron
Iron
Cedar
Top achievements
Rank 1
Iron
Emil
Top achievements
Rank 1
Iron
Kyle Watson
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?