I am using the RadGrid in which we are using the self referencing hierarchy.
In the we are opening a new page in the row_doubleClick Event of the Grid.
var MasterTable = grid.get_masterTableView();
var row = MasterTable.get_dataItems()[dataItem.rowIndex-1];
Please find the above code which returns the row index.
It returns for the MasterTable but if i double click the child event iam not able to get the respective event.
Please provide me solution in so that i can get the row index of the child event in the self referencing hiearchy grid.
Thanks
Veda.S
| <%@ Page Language="C#" AutoEventWireup="false" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %> | |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> | |
| <!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> | |
| <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> | |
| </head> | |
| <body> | |
| <form id="form1" runat="server"> | |
| <asp:ScriptManager ID="ScriptManager1" runat="server"> | |
| </asp:ScriptManager> | |
| <div> | |
| <div>#1<asp:TextBox ID="TextBox1" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField1" runat="server" /></div> | |
| <div>#2<asp:TextBox ID="TextBox2" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField2" runat="server" /></div> | |
| <div>#3<asp:TextBox ID="TextBox3" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField3" runat="server" /></div> | |
| <div>#4<asp:TextBox ID="TextBox4" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField4" runat="server" /></div> | |
| <div>#5<asp:TextBox ID="TextBox5" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField5" runat="server" /></div> | |
| <div>#6<asp:TextBox ID="TextBox6" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField6" runat="server" /></div> | |
| <div>#7<asp:TextBox ID="TextBox7" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField7" runat="server" /></div> | |
| <div>#8<asp:TextBox ID="TextBox8" runat="server" CssClass="ddl" style="width: 300px;" /><asp:HiddenField ID="HiddenField8" runat="server" /></div> | |
| <br /><br /> | |
| <telerik:RadComboBox ID="rcmb" runat="server" Skin="Default" Width="300px" | |
| ShowMoreResultsBox="false" EnableVirtualScrolling="false" EnableLoadOnDemand="false" | |
| MarkFirstMatch="false" ItemRequestTimeout="500" OpenDropDownOnLoad="false" ShowDropDownOnTextboxClick="false"> | |
| <Items> | |
| <telerik:RadComboBoxItem Text="Item 1" Value="1" /> | |
| <telerik:RadComboBoxItem Text="Item 2" Value="2" /> | |
| <telerik:RadComboBoxItem Text="Item 3" Value="3" /> | |
| <telerik:RadComboBoxItem Text="Item 4" Value="4" /> | |
| <telerik:RadComboBoxItem Text="Item 5" Value="5" /> | |
| <telerik:RadComboBoxItem Text="Item 6" Value="6" /> | |
| </Items> | |
| </telerik:RadComboBox> | |
| <div>Functions called</div> | |
| <div id="fcts" style="height: 250px; overflow: auto; border: solid 1px gray;"></div> | |
| <script type="text/javascript"> | |
| /* <![CDATA[ */ | |
| Sys.Application.add_load(function() | |
| { | |
| var _activeTb; | |
| var _rcmb = $find("<%= rcmb.ClientID %>"); | |
| _rcmb.get_element().style.position = 'absolute'; | |
| _rcmb.get_element().style.display = 'none'; | |
| _rcmb.set_closeDropDownOnBlur(false); | |
| _rcmb.add_selectedIndexChanged(UpdateValue); | |
| _rcmb.add_onClientBlur(HideDdl); | |
| _rcmb.disable(); | |
| function ShowDdl(tb) | |
| { | |
| $("#fcts").append("ShowDdl()<br />"); | |
| _activeTb = tb; | |
| _rcmb.enable(); | |
| var div = _rcmb.get_element(); | |
| var offset = $(_activeTb).offset(); | |
| div.style.top = offset.top + "px"; | |
| div.style.left = offset.left + "px"; | |
| _rcmb.clearSelection(); | |
| _rcmb.set_text(_activeTb.value); | |
| _rcmb.set_value($("INPUT[type=hidden]", _activeTb.parentNode).val()); | |
| _activeTb.style.visibility = 'hidden'; | |
| div.style.display = ''; | |
| _rcmb.get_inputDomElement().focus(); | |
| if (_rcmb.get_text().length != 0) { | |
| _rcmb.selectText(0, _rcmb.get_text().length); | |
| } | |
| _rcmb.showDropDown(); | |
| } | |
| function UpdateValue(sender, eventArgs) | |
| { | |
| $("#fcts").append("UpdateValue()<br />"); | |
| var item = eventArgs.get_item(); | |
| if (item != null) { | |
| $(_activeTb).val(item.get_text()); | |
| $("INPUT[type=hidden]", _activeTb.parentNode).val(item.get_value()); | |
| } | |
| else { | |
| $(_activeTb).val(""); | |
| $("INPUT[type=hidden]", _activeTb.parentNode).val(""); | |
| } | |
| } | |
| function HideDdl() | |
| { | |
| $("#fcts").append("HideDdl()<br />"); | |
| _activeTb.style.visibility = ''; | |
| _rcmb.hideDropDown(); | |
| /* uncommment the following lines | |
| and the textbox onfocus() event will not be called | |
| in IE after OnClientBlur()... must reclick. | |
| Note: Firefox works ok. |
|
| */ | |
| // _rcmb.get_element().style.display = 'none'; | |
| // _rcmb.disable(); | |
| } | |
| $(".ddl").focus(function() | |
| { | |
| ShowDdl(this); | |
| }); | |
| }); | |
| /* ]]> */ | |
| </script> | |
| </div> | |
| </form> | |
| </body> | |
| </html> | |
<telerik:RadGrid ID="RadGrid1" runat="server" onneeddatasource="NeedData" AutoGenerateColumns="False">
<MasterTableView ClientDataKeyNames="NewCol1" Width="100%">
<Columns>
<telerik:GridBoundColumn DataField="rowId" HeaderText="rowId" Visible="false" UniqueName="rowId">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="NewCol1" HeaderText="NewCol1" ReadOnly="False" UniqueName="NewCol1">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Selecting AllowRowSelect="True"/>
<ClientEvents OnRowDblClick="OnRowSelected" />
<Scrolling AllowScroll="True" UseStaticHeaders="True" ScrollHeight="200px"/>
</ClientSettings>
</telerik:RadGrid>
A DataTable is used as the data source on the server side. In the RadGrid, when you double click a row, a RadWindow is used to popup a window to edit the selected row's data. The popup window in turn calls my local js method to update the row with the new values. All is well and the examples I have followed work as expected. When I finally hit a save button on the page (which posts back to the server), I believe .Net is loading the view state of the RadGrid without the changes I have made to the grid. I kind of expected this given that .Net rebuilds the controls in the Init event. So I have two questions,
1) How do I get the changes I have made to the grid on the client side to the server, and/or
2) The RadWindow used to make the changes calls the js function BrowserWindow.myUpdateMethod which is all client side. If I cannot easily get the client side changes, how can I force the RadWindow to post back instead of calling my js function? In the past, we have used CodeSummit WebModalControls which does precisely that, which allows us to change the data client side and rebind.
Thanks for your help.
Paul
| function Grid1_OnRowSelected(sender, eventArgs) |
| { |
| var MasterTable = sender.get_masterTableView(); |
| var selectedRows = MasterTable.get_selectedItems(); |
| var gridToolbar = GetRegisteredServerElement("Grid1Toolbar"); |
| if (selectedRows.get_Count() > 0) |
| { |
| gridToolbar.findItemByAttribute("CommandName", "Copy").enable(); |
| gridToolbar.findItemByAttribute("CommandName", "Move").enable(); |
| gridToolbar.findItemByAttribute("CommandName", "ToggleStatus").enable(); |
| // Enable copy/move command items |
| } |
| else |
| { |
| gridToolbar.findItemByAttribute("CommandName", "Copy").disable(); |
| gridToolbar.findItemByAttribute("CommandName", "Move").disable(); |
| gridToolbar.findItemByAttribute("CommandName", "ToggleStatus").disable(); |
| // Disable copy/move command items |
| } |