Hi,
I am developing a RadGrid in asp.net Ajax which has features same as that of the RadGrid of the Silverlight component. i have comboboxes as cells in my grid and have a code to navigate the grid with arrow keys.
my problem is that on focus of the combobox, i want to navigate through the items in the combobox or in case of a text box edit the item, but as per above code when i press the arrow key i am moved onto next cell. can you please help me out with this?
an alternative solution that would be helpful:
in simple terms i want to have a radGrid in asp.net which has features of the silverlight radgrid controls. that is what i am trying to achieve through above code. A sample code for the same will be very helpful.
I am developing a RadGrid in asp.net Ajax which has features same as that of the RadGrid of the Silverlight component. i have comboboxes as cells in my grid and have a code to navigate the grid with arrow keys.
<telerik:RadGrid AllowMultiRowSelection="True" ID="RadGrid1" runat="server" DataSourceID="AccessDataSource1" GridLines="None" OnPreRender="RadGrid1_PreRender" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" PageSize="5" AutoGenerateEditColumn="True"> <MasterTableView AutoGenerateColumns="False" DataKeyNames="CustomerID" DataSourceID="AccessDataSource1"> <RowIndicatorColumn Visible="False"> <HeaderStyle Width="20px" /> </RowIndicatorColumn> <ExpandCollapseColumn Resizable="False" Visible="False"> <HeaderStyle Width="20px" /> </ExpandCollapseColumn> <Columns> <%-- removed onkeydown event from all text boxes --%> <telerik:GridBoundColumn DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" SortExpression="CustomerID" UniqueName="CustomerID"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" UniqueName="CompanyName"> <ItemTemplate> <telerik:RadComboBox ID="RadComboBox1" Runat="server" DataTextField="CompanyName" AllowCustomText="True" DataValueField="CompanyName" Text="select value" AutoPostBack="True" > <Items> <telerik:RadComboBoxItem runat="server" Text="arr" Value="arr" /> <telerik:RadComboBoxItem runat="server" Text="dep" Value="dep" /> </Items> </telerik:RadComboBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="ContactName" HeaderText="ContactName" SortExpression="ContactName" UniqueName="ContactName"> <ItemTemplate> <asp:TextBox ID="box2" runat="server" Text='<%#Eval("ContactName") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="ContactTitle" HeaderText="ContactTitle" SortExpression="ContactTitle" UniqueName="ContactTitle"> <ItemTemplate> <asp:TextBox ID="box3" runat="server" Text='<%#Eval("ContactTitle") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Address" HeaderText="Address" SortExpression="Address" UniqueName="Address"> <ItemTemplate> <asp:TextBox ID="box4" runat="server" Text='<%#Eval("Address") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="City" HeaderText="City" SortExpression="City" UniqueName="City"> <ItemTemplate> <asp:TextBox ID="box5" runat="server" Text='<%#Eval("City") %>'></asp:TextBox> </ItemTemplate> </telerik:GridTemplateColumn>/Columns> </MasterTableView> <ClientSettings> <Selecting AllowRowSelect="True" /> <ClientEvents OnKeyPress="keyPress" OnGridCreated="gridCreated" OnRowSelecting="rowSelecting" /> </ClientSettings> <EditItemStyle BackColor="Yellow" /> </telerik:RadGrid><script type="text/javascript"> var RadGrid1; var columnCounter = 0; var rowCounter = 0; var currentCell = null; function getCell(grid) { var cell; var columnName = grid.get_masterTableView().get_columns()[columnCounter].get_uniqueName(); var row = grid.get_masterTableView().get_dataItems()[rowCounter]; cell = grid.get_masterTableView().getCellByColumnUniqueName(row, columnName); return cell; } function getColumnName(grid) { return grid.get_masterTableView().get_columns()[columnCounter].get_uniqueName(); } function handleKeyPress(keyCode) { if (keyCode == 39) { if (columnCounter < RadGrid1.get_masterTableView().get_columns().length - 1) { if (currentCell != null) { currentCell.className = ""; } columnCounter++; currentCell = getCell(RadGrid1); currentCell.className = "class1"; if (getColumnName(RadGrid1) == "CustomerID") { currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CompanyName") { $telerik.findElement(currentCell, "RadComboBox1").focus(); } if (getColumnName(RadGrid1) == "ContactName") { $telerik.findElement(currentCell, "box2").focus(); } if (getColumnName(RadGrid1) == "ContactTitle") { $telerik.findElement(currentCell, "box3").focus(); } if (getColumnName(RadGrid1) == "Address") { $telerik.findElement(currentCell, "box4").focus(); } if (getColumnName(RadGrid1) == "City") { $telerik.findElement(currentCell, "box5").focus(); } if (getColumnName(RadGrid1) == "Region") { $telerik.findElement(currentCell, "box6").focus(); } if (getColumnName(RadGrid1) == "PostalCode") { $telerik.findElement(currentCell, "box7").focus(); } if (getColumnName(RadGrid1) == "Phone") { $telerik.findElement(currentCell, "box8").focus(); } if (getColumnName(RadGrid1) == "Fax") { $telerik.findElement(currentCell, "box9").focus(); } } } else if (keyCode == 37) { if (currentCell != null) { currentCell.className = ""; } if (columnCounter > 0) { columnCounter--; currentCell = getCell(RadGrid1); currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CustomerID") { currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CompanyName") { $telerik.findElement(currentCell, "RadComboBox1").focus(); } if (getColumnName(RadGrid1) == "ContactName") { $telerik.findElement(currentCell, "box2").focus(); } if (getColumnName(RadGrid1) == "ContactTitle") { $telerik.findElement(currentCell, "box3").focus(); } if (getColumnName(RadGrid1) == "Address") { $telerik.findElement(currentCell, "box4").focus(); } if (getColumnName(RadGrid1) == "City") { $telerik.findElement(currentCell, "box5").focus(); } if (getColumnName(RadGrid1) == "Region") { $telerik.findElement(currentCell, "box6").focus(); } if (getColumnName(RadGrid1) == "PostalCode") { $telerik.findElement(currentCell, "box7").focus(); } if (getColumnName(RadGrid1) == "Phone") { $telerik.findElement(currentCell, "box8").focus(); } if (getColumnName(RadGrid1) == "Fax") { $telerik.findElement(currentCell, "box9").focus(); } } else if (keyCode == 38) { if (rowCounter > 0) { if (currentCell != null) { currentCell.className = ""; } rowCounter--; currentCell = getCell(RadGrid1); currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CustomerID") { currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CompanyName") { $telerik.findElement(currentCell, "RadComboBox1").focus(); } if (getColumnName(RadGrid1) == "ContactName") { $telerik.findElement(currentCell, "box2").focus(); } if (getColumnName(RadGrid1) == "ContactTitle") { $telerik.findElement(currentCell, "box3").focus(); } if (getColumnName(RadGrid1) == "Address") { $telerik.findElement(currentCell, "box4").focus(); } if (getColumnName(RadGrid1) == "City") { $telerik.findElement(currentCell, "box5").focus(); } if (getColumnName(RadGrid1) == "Region") { $telerik.findElement(currentCell, "box6").focus(); } if (getColumnName(RadGrid1) == "PostalCode") { $telerik.findElement(currentCell, "box7").focus(); } if (getColumnName(RadGrid1) == "Phone") { $telerik.findElement(currentCell, "box8").focus(); } if (getColumnName(RadGrid1) == "Fax") { $telerik.findElement(currentCell, "box9").focus(); } } else if (keyCode == 40) { if (rowCounter < RadGrid1.get_masterTableView().get_dataItems().length - 1) { if (currentCell != null) { currentCell.className = ""; } rowCounter++; currentCell = getCell(RadGrid1); currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CustomerID") { currentCell.className = "class1"; } if (getColumnName(RadGrid1) == "CompanyName") { $telerik.findElement(currentCell, "RadComboBox1").focus(); } if (getColumnName(RadGrid1) == "ContactName") { $telerik.findElement(currentCell, "box2").focus(); } if (getColumnName(RadGrid1) == "ContactTitle") { $telerik.findElement(currentCell, "box3").focus(); } if (getColumnName(RadGrid1) == "Address") { $telerik.findElement(currentCell, "box4").focus(); } if (getColumnName(RadGrid1) == "City") { $telerik.findElement(currentCell, "box5").focus(); } if (getColumnName(RadGrid1) == "Region") { $telerik.findElement(currentCell, "box6").focus(); } if (getColumnName(RadGrid1) == "PostalCode") { $telerik.findElement(currentCell, "box7").focus(); } if (getColumnName(RadGrid1) == "Phone") { $telerik.findElement(currentCell, "box8").focus(); } if (getColumnName(RadGrid1) == "Fax") { $telerik.findElement(currentCell, "box9").focus(); } } } function textBoxKeyPress(e) { var evt = e ? e : window.event; //focus next control in the cell //or if not any, continue to next cell. handleKeyPress(e.keyCode); } function keyPress(sender, args) { var keyCode = args.get_keyCode(); handleKeyPress(keyCode); } function gridCreated(sender, args) { RadGrid1 = sender; currentCell = RadGrid1.get_masterTableView().getCellByColumnUniqueName(RadGrid1.get_masterTableView().get_dataItems()[0], "CustomerID"); currentCell.className = "class1"; } function rowSelecting() { return false; }my problem is that on focus of the combobox, i want to navigate through the items in the combobox or in case of a text box edit the item, but as per above code when i press the arrow key i am moved onto next cell. can you please help me out with this?
an alternative solution that would be helpful:
in simple terms i want to have a radGrid in asp.net which has features of the silverlight radgrid controls. that is what i am trying to achieve through above code. A sample code for the same will be very helpful.
