This is a migrated thread and some comments may be shown as answers.

[Solved] grid focus after ajax call

2 Answers 140 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Matthew Johnson
Top achievements
Rank 1
Matthew Johnson asked on 02 Dec 2009, 12:50 PM

I have a server bound grid that allows the user to expand the top level using the keyboard.  every thing works fine except the grid doesn't maintain focus after the ajax call.  I've tried both javascript to set focus to the grid as well as some server side code, but the page alway has focus not the grid. 

here's the code

telerik:RadCodeBlock ID="codeblock1" runat="server" > 
 
  <script type="text/javascript">  
 
          var selectedRow;  
 
          function RowSelected(sender, eventArgs) {  
              selectedRow = eventArgs.get_itemIndexHierarchical();  
          }  
 
         function RowDblClicked(sender, eventArgs) {  
 
             $find("<%= RadGrid1.MasterTableView.ClientID %>").fireCommand("ExpandSelected", eventArgs.get_itemIndexHierarchical());  
         }  
           
 
         function KeyPress(sender, eventArgs, key) {  
             var originalEvent = window.event;  
 
              
             if (originalEvent.ctrlKey) {  
 
                 if (originalEvent.keyCode == 39) {  
       
                     $find("<%= RadGrid1.MasterTableView.ClientID %>").fireCommand("ExpandSelected", selectedRow);  
                       
                       
                 }  
             }  
         }    
           
           
        
           
           
 
       
      </script> 
 
</telerik:RadCodeBlock>          
    <telerik:RadGrid ID="RadGrid1" DataSourceID="SessionDataSource1" runat="server" ShowStatusBar="True" 
        AutoGenerateColumns="False" PageSize="3" AllowSorting="True" AllowPaging="True" 
        AllowMultiRowEdit="True" GridLines="None" Skin="Web20" > 
        <ClientSettings AllowKeyboardNavigation="True"   > 
                    <ClientEvents  OnRowDblClick="RowDblClicked" OnKeyPress="KeyPress"   
                        OnRowSelected="RowSelected"      /> 
                     <Scrolling AllowScroll="true" UseStaticHeaders="true" /> 
                     <Selecting AllowRowSelect="True" /> 
                     <KeyboardNavigationSettings FocusKey="G" /> 
                 </ClientSettings>    
        <pagerstyle mode="NumericPages"></pagerstyle> 
        <mastertableview datasourceid="SessionDataSource1" datakeynames="CustomerID" allowmulticolumnsorting="True" 
            width="100%" commanditemdisplay="Top" name="Customers" allowautomaticupdates="true" EditMode="InPlace"   
            allowautomaticinserts="true" allowautomaticdeletes="true">  
              
            <DetailTables> 
              
                <telerik:GridTableView DataKeyNames="OrderID" DataSourceID="SessionDataSource2" Width="100%" 
                    runat="server" CommandItemDisplay="Top" Name="Orders"  AllowPaging="false" EditMode="InPlace"   > 
                     
                    <ParentTableRelation> 
                        <telerik:GridRelationFields DetailKeyField="CustomerID" MasterKeyField="CustomerID" /> 
                    </ParentTableRelation> 
                      
                    <DetailTables  > 
                      
                      
                        <telerik:GridTableView DataKeyNames="OrderID,ProductID" DataSourceID="SessionDataSource3" 
                            Width="100%" runat="server" CommandItemDisplay="Top" Name="Details"  EditMode="InPlace" 
                            AllowPaging="false" >    
                                                  
                            
                            <ParentTableRelation> 
                                <telerik:GridRelationFields DetailKeyField="OrderID" MasterKeyField="OrderID" /> 
                            </ParentTableRelation> 
                              
                            <Columns > 
                                <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn1" > 
                                    <HeaderStyle Width="20px" /> 
                                    <ItemStyle CssClass="MyImageButton"  /> 
                                </telerik:GridEditCommandColumn> 
                                <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton" 
                                    DataField="OrderID" UniqueName="OrderID" ReadOnly="true" Visible="false">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridBoundColumn SortExpression="UnitPrice" HeaderText="Unit Price" HeaderButtonType="TextButton" 
                                    DataField="UnitPrice" UniqueName="UnitPrice">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridBoundColumn SortExpression="Quantity" HeaderText="Quantity" HeaderButtonType="TextButton" 
                                    DataField="Quantity" UniqueName="Quantity">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridBoundColumn SortExpression="Discount" HeaderText="Discount" HeaderButtonType="TextButton" 
                                    DataField="Discount" UniqueName="Discount">  
                                </telerik:GridBoundColumn> 
                                <telerik:GridButtonColumn ConfirmText="Delete this product?" ButtonType="ImageButton" 
                                    CommandName="Delete" Text="Delete" UniqueName="DeleteColumn1">  
                                    <HeaderStyle Width="20px" /> 
                                    <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> 
                                </telerik:GridButtonColumn> 
                            </Columns> 
                              
                            <SortExpressions> 
                                <telerik:GridSortExpression FieldName="Quantity" SortOrder="Descending"></telerik:GridSortExpression> 
                            </SortExpressions> 
                              
                            <EditFormSettings EditFormType="Template"  > 
                               
                            <FormTemplate > 
                              
                                    <asp:Panel ID="pnlEdit" runat="server" BackColor="DimGray"   > 
                                      
                                        <telerik:RadTextBox ID="tbox1" runat="server"  ></telerik:RadTextBox> 
                                        <telerik:RadTextBox ID="tbox2" runat="server"  ></telerik:RadTextBox> 
                                        <telerik:RadTextBox ID="tbox3" runat="server"  ></telerik:RadTextBox> 
                                      
                                    </asp:Panel> 
                                      
                            </FormTemplate>   
                              
                            </EditFormSettings>   
                        </telerik:GridTableView> 
                          
                          
                    </DetailTables> 
                    <ExpandCollapseColumn Visible="True">  
                    </ExpandCollapseColumn> 
                    <Columns> 
                        <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn2">  
                            <HeaderStyle Width="20px" /> 
                            <ItemStyle CssClass="MyImageButton" /> 
                        </telerik:GridEditCommandColumn> 
                        <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton" 
                            DataField="OrderID" UniqueName="OrderID" ReadOnly="true">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn SortExpression="OrderDate" HeaderText="Date Ordered" HeaderButtonType="TextButton" 
                            DataField="OrderDate" UniqueName="OrderDate">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn SortExpression="RequiredDate" HeaderText="RequiredDate" 
                            HeaderButtonType="TextButton" DataField="RequiredDate" UniqueName="RequiredDate">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn SortExpression="EmployeeID" HeaderText="EmployeeID" HeaderButtonType="TextButton" 
                            DataField="EmployeeID" UniqueName="EmployeeID">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridButtonColumn ConfirmText="Delete these details record?" ButtonType="ImageButton" 
                            CommandName="Delete" Text="Delete" UniqueName="DeleteColumn2">  
                            <HeaderStyle Width="20px" /> 
                            <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> 
                        </telerik:GridButtonColumn> 
                    </Columns> 
                    <SortExpressions> 
                        <telerik:GridSortExpression FieldName="OrderDate"></telerik:GridSortExpression> 
                    </SortExpressions> 
                </telerik:GridTableView> 
            </DetailTables> 
              
              
            <ExpandCollapseColumn Visible="True">  
            </ExpandCollapseColumn> 
              
              
            <Columns> 
                <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">  
                    <HeaderStyle Width="20px" /> 
                    <ItemStyle CssClass="MyImageButton" /> 
                </telerik:GridEditCommandColumn> 
                <telerik:GridBoundColumn SortExpression="CustomerID" HeaderText="CustomerID" HeaderButtonType="TextButton" 
                    DataField="CustomerID" UniqueName="CustomerID" ReadOnly="true">  
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn SortExpression="ContactName" HeaderText="Contact Name" HeaderButtonType="TextButton" 
                    DataField="ContactName" UniqueName="ContactName">  
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn SortExpression="CompanyName" HeaderText="Company" HeaderButtonType="TextButton" 
                    DataField="CompanyName" UniqueName="CompanyName">  
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn SortExpression="Address" HeaderText="Address" HeaderButtonType="TextButton" 
                    DataField="Address" UniqueName="Address">  
                </telerik:GridBoundColumn> 
                <telerik:GridButtonColumn ConfirmText="Delete this customer?" ButtonType="ImageButton" 
                    CommandName="Delete" Text="Delete" UniqueName="DeleteColumn">  
                    <HeaderStyle Width="20px" /> 
                    <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> 
                </telerik:GridButtonColumn> 
            </Columns>   
              
            <SortExpressions> 
                <telerik:GridSortExpression FieldName="CompanyName"></telerik:GridSortExpression> 
            </SortExpressions> 
              
            <EditFormSettings> 
                <EditColumn UniqueName="EditCommandColumn1">  
                </EditColumn> 
            </EditFormSettings> 
              
        </mastertableview> 
    </telerik:RadGrid> 
      
        <!-- content start --> 
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">  
            <AjaxSettings> 
                <telerik:AjaxSetting AjaxControlID="RadGrid1">  
                    <UpdatedControls> 
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
                        <telerik:AjaxUpdatedControl ControlID="RadAjaxPanel1" /> 
                    </UpdatedControls> 
                </telerik:AjaxSetting> 
            </AjaxSettings> 
        </telerik:RadAjaxManager> 


        If e.CommandName = "ExpandSelected" Then 
 
            If IsNumeric(e.CommandArgument) Then 
                Dim otv As GridTableView = CType(e.Item.OwnerTableView, GridTableView)  
 
                otv.Items(CInt(e.CommandArgument)).Expanded = True 
 
            End If 
 
        End If 



Due to the amount of data that being pulled the grid needs to pull the detail records on demand.   But there is a MAJOR push to do as much with the keyboard as possible.  Everything works great, I just need to set focus after the grid is expanded using the keyboard.

Thanks,
matchbx

2 Answers, 1 is accepted

Sort by
0
Matthew Johnson
Top achievements
Rank 1
answered on 02 Dec 2009, 07:37 PM
anybody......
0
Matthew Johnson
Top achievements
Rank 1
answered on 04 Dec 2009, 02:12 AM
Very simple solution.  just place this in the code behind.....

RadAjaxManager1.FocusControl(RadGrid1.ClientID)


like so......
        If e.CommandName = "ExpandSelected" Then    
    
            If IsNumeric(e.CommandArgument) Then    
                Dim otv As GridTableView = CType(e.Item.OwnerTableView, GridTableView)     
    
                otv.Items(CInt(e.CommandArgument)).Expanded = True    
                RadAjaxManager1.FocusControl(RadGrid1.ClientID)  
 
            End If    
    
        End If    
 



 

Tags
Grid
Asked by
Matthew Johnson
Top achievements
Rank 1
Answers by
Matthew Johnson
Top achievements
Rank 1
Share this question
or