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