Hi everyone,
I am trying to implement the feature of editing a row in radgrid on doubleclick event.
Everything works fine if i use gridboundcolumns and automatic update.
My problem is when there is a templatecolumn like this
when i double click on the "comment row" the edit form is correctly used but I can't save my change.
When i debug the code i notice that on the click event:
the variable hasChanges is false even if modification where made.
Debuging again i found that during this event:
my edittemplateitem was not added to "inputs" and thus don't receive the "onchange=TrackChanges".
I think inputs = gridElement.getElementsByTagName("input"); "
doesn't collect my edittemplateitem because it's hidden but i am not sure at all.
Any advice?
thank you
I am trying to implement the feature of editing a row in radgrid on doubleclick event.
Everything works fine if i use gridboundcolumns and automatic update.
My problem is when there is a templatecolumn like this
| <telerik:RadGrid ID="GridComment" runat="server" DataSourceID = "SqlDataSource1" |
| AutoGenerateColumns="False" AllowAutomaticUpdates ="true" OnItemUpdated="GridComment_ItemUpdated" |
| OnDataBound="GridComment_DataBound" ShowStatusBar="True" ShowFooter ="true"> |
| <MasterTableView EditMode ="InPlace" > |
| <Columns> |
| <telerik:GridBoundColumn HeaderText = "Client Sample ID" DataField = "description" ReadOnly="true"/> |
| <telerik:GridBoundColumn HeaderText = "ID" DataField = "sampleid" ReadOnly ="true" ForceExtractValue ="InEditMode" /> |
| <telerik:GridBoundColumn Visible ="false" DataField= "error_id" UniqueName="error_id" ReadOnly ="true" ForceExtractValue ="InEditMode"/> |
| <telerik:GridBoundColumn HeaderText = "SIR" DataField = "error_type" ReadOnly="true"/> |
| <telerik:GridTemplateColumn HeaderText = "Comment" UniqueName="comments"> |
| <EditItemTemplate> |
| <telerik:RadTextBox ID="EditTxtComment" runat="server" Text='<%# Bind("comments")%>' TextMode="MultiLine"> |
| </telerik:RadTextBox> |
| </EditItemTemplate> |
| <ItemTemplate> |
| <telerik:RadTextBox ID="TxtComment" runat="server" Text='<%# Eval("comments")%>' TextMode="MultiLine" ReadOnly="true" > |
| </telerik:RadTextBox> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| </Columns> |
| </MasterTableView> |
| <ClientSettings> |
| <ClientEvents OnRowClick="RowClick" OnRowDblClick="RowDblClick" |
| OnGridCreated="GridCreated" OnCommand="GridCommand" /> |
| </ClientSettings> |
| </telerik:RadGrid> |
when i double click on the "comment row" the edit form is correctly used but I can't save my change.
When i debug the code i notice that on the click event:
| function RowClick(sender, eventArgs) { |
| if (editedRow && hasChanges) { |
| hasChanges = false; |
| if (confirm("Update changes?")) { |
| $find("<%= GridComment.MasterTableView.ClientID %>").updateItem(editedRow); |
| } |
| } |
| } |
Debuging again i found that during this event:
| function GridCreated(sender, eventArgs) { |
| var gridElement = sender.get_element(); |
| var elementsToUse = []; |
| inputs = gridElement.getElementsByTagName("input"); |
| for (var i = 0; i < inputs.length; i++) { |
| var lowerType = inputs[i].type.toLowerCase(); |
| if (lowerType == "hidden" || lowerType == "button") { |
| continue; |
| } |
| Array.add(elementsToUse, inputs[i]); |
| inputs[i].onchange = TrackChanges; |
| } |
| dropdowns = gridElement.getElementsByTagName("select"); |
| for (var i = 0; i < dropdowns.length; i++) { |
| dropdowns[i].onchange = TrackChanges; |
| } |
| setTimeout(function() { if (elementsToUse[0]) elementsToUse[0].focus(); }, 100); |
| } |
I think inputs = gridElement.getElementsByTagName("input"); "
doesn't collect my edittemplateitem because it's hidden but i am not sure at all.
Any advice?
thank you