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

Child RadGrid stays in edit mode

3 Answers 118 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Richard
Top achievements
Rank 1
Richard asked on 08 Nov 2012, 05:19 AM
Hi, I'm having a problem with the RadGrid that has 2 levels of hierarchy, all bound in code behind (using NeedDataSource and DetailTableDataBind).  Both levels have InPlace editing and the top level works correctly when I save it, it goes back into read-only mode using the RadGrid.MasterTableView.ClearEditItems() function.  I try and do the same thing for the lower level one and whatever I do it stays in Edit Mode.  I've tried the same as above, I've tried editItem.OwnerTableView.ClearEditItems() in the UpdateCommand function (which is where the top level table does it when it works).  I have looked through forums trying different suggestions such as setting AllowAutomaticUpdates, Inserts etc. to false (though from what I understand that's the default value anyway).  

The row even saves and everything it's just that it doesn't revert back to non-edit mode.  I have noticed when I step through that the list of edit items in the child TableView stays at one item even after the ClearEditItems is called on it, while the MasterTableView seems to behave as expected when ClearEditItems is called on it.  Could this be a limitation of Telerik or am I doing something wrong?

Here's my mark-up, can anyone see what I may have done to cause this?

<telerik:RadGrid ID="gvMain" runat="server" AutoGenerateColumns="false" Skin="Metro_JS" EnableEmbeddedSkins="false" AllowSorting="true" AllowAutomaticUpdates="false" AllowAutomaticInserts="false" AllowAutomaticDeletes="false">
    <ClientSettings EnableRowHoverStyle="true" AllowKeyboardNavigation="true">
        <ClientEvents OnKeyPress="GridKeyPress" OnCommand="onEditCommand" />
        <KeyboardNavigationSettings AllowSubmitOnEnter="true" AllowActiveRowCycle="true" />
    </ClientSettings>
    <MasterTableView EnableNoRecordsTemplate="true" DataKeyNames="ID" AllowCustomSorting="true" EditMode="InPlace" Name="Discount">
        <HeaderStyle CssClass="StandardText" />
        <ItemStyle CssClass="Clickable" />
        <AlternatingItemStyle CssClass="Clickable" />
        <NoRecordsTemplate>
            <asp:Panel ID='pnlEmpty' runat='server' style='position: relative; width: 100%; height: 30px;'>
                <asp:Label ID='lblEmpty' runat='server' Text='No Results Found' style='font-weight: bold; position: absolute; top: 10px; left: 10px;' CssClass='StandardText' />
            </asp:Panel>                       
        </NoRecordsTemplate>
        <Columns>
            <telerik:GridBoundColumn DataField="Name" HeaderText="Name" UniqueName="DiscountName" MaxLength="100" ItemStyle-Width="600px"></telerik:GridBoundColumn>
            <telerik:GridTemplateColumn HeaderText="Start Date" ItemStyle-Width="160px">
                <ItemTemplate>
                    <asp:Label ID='lblStartDate' runat='server' Text='' CssClass='StandardText' />
                </ItemTemplate>
                <EditItemTemplate>
                    <telerik:RadDatePicker ID="rdpStartDate" runat="server" Width="150px">
                    </telerik:RadDatePicker>
                    <asp:RequiredFieldValidator ID="valAmount" ControlToValidate="rdpStartDate" runat="server" Text="*" SetFocusOnError="True"
                        Display="Dynamic" EnableViewState="true" ErrorMessage="Please enter a start date"></asp:RequiredFieldValidator>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="End Date" ItemStyle-Width="160px">
                <ItemTemplate>
                    <asp:Label ID='lblFinishDate' runat='server' Text='' CssClass='StandardText' />
                </ItemTemplate>
                <EditItemTemplate>
                    <telerik:RadDatePicker ID="rdpFinishDate" runat="server" Width="150px">
                    </telerik:RadDatePicker>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" ItemStyle-CssClass="EditColumn"
                UpdateImageUrl="../Images/tick-icon.png" CancelImageUrl="../Images/arrow-undo-icon.png" InsertImageUrl="../Images/tick-icon.png" />
            <telerik:GridTemplateColumn ItemStyle-CssClass="DeleteColumn" UniqueName="DeleteColumn">
                <ItemTemplate>
                    <asp:ImageButton ID="imgDelete" runat="server" ImageUrl="~/Images/cross.png" CommandName="Delete" ToolTip="Delete"
                    OnClientClick="return confirm('Are you sure you want to delete this Discount?');" CommandArgument='<%# Eval("ID") %>' />
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
        <DetailTables>
            <telerik:GridTableView AllowAutomaticUpdates="false" AllowAutomaticInserts="false" AllowAutomaticDeletes="false" DataKeyNames="ID" Name="DiscountItem" ShowHeader="false" EditMode="InPlace" AllowPaging="true" PagerStyle-Position="Bottom" AllowCustomPaging="true">
                <SortExpressions>
                    <telerik:GridSortExpression FieldName="SortOrder" SortOrder="Ascending" />
                </SortExpressions>
                <ItemStyle CssClass="Clickable" />
                <AlternatingItemStyle CssClass="Clickable" />
                <NoRecordsTemplate>
                    <asp:Panel ID='pnlEmpty' runat='server' style='position: relative; width: 100%; height: 30px;'>
                        <asp:Label ID='lblEmpty' runat='server' Text='No Results Found' style='font-weight: bold; position: absolute; top: 10px; left: 10px;' CssClass='StandardText' />
                    </asp:Panel>   
                </NoRecordsTemplate>
                <Columns>
                    <telerik:GridTemplateColumn ItemStyle-Width="750px">
                        <ItemTemplate>
                            <asp:Panel ID='pnlMessage' runat='server' Width="750px" Height="20px">
                                <asp:Label ID="lblCustomerClause" runat="server" Text="When [Customer] orders "></asp:Label>
                                <asp:Label ID="lblQuantityClause" runat="server" Text="between [Min] and [Max] "></asp:Label>
                                <asp:Label ID="lblItemClause" runat="server" Text="of [Item] "></asp:Label>
                                <asp:Label ID="lblPriceClause" runat="server" Text="the price is [discount_type][discount_value]. "></asp:Label>
                            </asp:Panel>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:Panel ID='pnlEditMessage' runat='server' Width="750px">
                                <asp:Label ID="lblCustomerClause1" runat="server" Text="When " style='position: relative; top: 3px;'></asp:Label>
                                <telerik:RadComboBox ID="cboCustomerOrGroup" runat="server" Skin="Metro_JobSync" EnableEmbeddedSkins="false" OnClientSelectedIndexChanged="selectCustomerOrGroup">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="Customer" Value="C" />
                                        <telerik:RadComboBoxItem Text="Customer Group" Value="G" />
                                    </Items>
                                </telerik:RadComboBox>
                                <asp:TextBox ID='txtCustomer' runat='server' style='width: 120px;' CssClass='StandardText txtCustomer' onkeydown='invalidateCustomerMain();' />
                                <ajax:AutoCompleteExtender runat='server' ID='acTxtCustomer' TargetControlID='txtCustomer' ServicePath='~/Ajax.asmx' ServiceMethod='SearchCustomer' MinimumPrefixLength='3' CompletionSetCount='10'
                                    CompletionInterval='1' CompletionListHighlightedItemCssClass='searchTextMouseOver' CompletionListItemCssClass='searchText' EnableCaching='false' OnClientItemSelected='gridCustomerClicked' FirstRowSelected='true'
                                    CompletionListCssClass='searchBox' />
                                <asp:TextBox ID='hidCustomerID' CssClass="hidCustomerID" style="display: none;" runat='server' Text='0'></asp:TextBox>
                                <asp:TextBox ID='txtCustomerDiscountGroup' runat='server' style='width: 120px;' CssClass='StandardText txtCustomerDiscountGroup' onkeydown='invalidateCustomerMain();' />
                                <ajax:AutoCompleteExtender runat='server' ID='acCustomerDiscountGroup' TargetControlID='txtCustomerDiscountGroup' ServicePath='~/Ajax.asmx' ServiceMethod='SearchCustomerDiscountGroup' MinimumPrefixLength='1' CompletionSetCount='10'
                                    CompletionInterval='1' CompletionListHighlightedItemCssClass='searchTextMouseOver' CompletionListItemCssClass='searchText' EnableCaching='false' FirstRowSelected='true'
                                    CompletionListCssClass='searchBox' />
                                <asp:Label ID="lblCustomerClause2" runat="server" Text=" orders " style='position: relative; top: 3px;'></asp:Label>
                                 
                                <telerik:RadComboBox ID="cboQuantityType" runat="server" Width="80px" Skin="Metro_JobSync" EnableEmbeddedSkins="false" OnClientSelectedIndexChanged="selectQuantityType">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="up to" Value="<" />
                                        <telerik:RadComboBoxItem Text="at least" Value=">" />
                                        <telerik:RadComboBoxItem Text="between" Value="><" />
                                    </Items>
                                </telerik:RadComboBox>
                                 
                                <telerik:RadNumericTextBox runat="server" ID="txtMinQuantity" CssClass="txtMinQuantity" Width="60px"></telerik:RadNumericTextBox>
                                <asp:Label ID="lblQuantityClause2" runat="server" Text=" and " CssClass="lblQuantityClause2" style='position: relative; top: 3px;'></asp:Label>
                                <telerik:RadNumericTextBox runat="server" ID="txtMaxQuantity" CssClass="txtMaxQuantity" Width="60px"></telerik:RadNumericTextBox>                                      
                                 
                                <telerik:RadComboBox ID="cboItemOrCategory" runat="server" Width="140px" Skin="Metro_JobSync" EnableEmbeddedSkins="false" OnClientSelectedIndexChanged="selectItemOrCategory">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="of item" Value="I" />
                                        <telerik:RadComboBoxItem Text="from item category" Value="C" />
                                    </Items>
                                </telerik:RadComboBox>
                                 
                                <asp:TextBox ID='txtItem' runat='server' style='width: 170px;' CssClass='StandardText txtItem' onkeydown='invalidateItemMain();' />
                                <ajax:AutoCompleteExtender runat='server' ID='acTxtItem' TargetControlID='txtItem' ServicePath='~/Ajax.asmx' ServiceMethod='SearchItemDistinctName' MinimumPrefixLength='3' CompletionSetCount='10'
                                    CompletionInterval='1' CompletionListHighlightedItemCssClass='searchTextMouseOver' CompletionListItemCssClass='searchText' EnableCaching='false' OnClientItemSelected='gridItemClicked' FirstRowSelected='true'
                                    CompletionListCssClass='searchBox' />
                                <asp:TextBox ID='hidItemID' CssClass='hidItemID' style="display: none;" runat='server' Text='0'></asp:TextBox>
         
                                <asp:Label ID="lblLocationClause" runat="server" Text=" from " CssClass="lblLocationClause" style='position: relative; top: 3px;'></asp:Label>
                                <telerik:RadComboBox ID="cboLocation" runat="server" Skin="Metro_JobSync" EnableEmbeddedSkins="false">
                                </telerik:RadComboBox>
                                 
                                <telerik:RadComboBox ID="cboItemCategory" runat="server" Width="312px" ShowToggleImage="True" AutoPostBack="true"
                                    Style="vertical-align: middle;" OnClientDropDownOpened="OnClientDropDownOpenedHandler"
                                    ExpandAnimation-Type="None" CollapseAnimation-Type="None" Skin="Metro_JobSync" EnableEmbeddedSkins="false">
                                    <ItemTemplate>
                                        <asp:Panel ID='pnlTreeView' runat='server' onclick='StopPropagation(event);'>
                                            <telerik:RadTreeView ID="tvItemCategory" runat="server" style='position: relative; width: 292px; z-index: 10; color: Black;' Skin="Metro_JobSync" EnableEmbeddedSkins="false">
                                            </telerik:RadTreeView>
                                        </asp:Panel>
                                    </ItemTemplate>
                                    <Items>
                                        <telerik:RadComboBoxItem Text="" CssClass="TreeViewWrapper" />
                                    </Items>
                                </telerik:RadComboBox>
                                 
                                <asp:Label ID="lblPriceClause" runat="server" Text="the price " style='position: relative; top: 3px;'></asp:Label>
                                 
                                <telerik:RadComboBox ID="cboDiscountType" runat="server" Width="170px" Skin="Metro_JobSync" EnableEmbeddedSkins="false">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="is discounted by amount " Value="1" />
                                        <telerik:RadComboBoxItem Text="is discounted by percentage " Value="2" />
                                        <telerik:RadComboBoxItem Text="is set to" Value="3" />
                                    </Items>
                                </telerik:RadComboBox>      
                                <telerik:RadNumericTextBox runat="server" ID="txtDiscountValue" Width="60px"></telerik:RadNumericTextBox>
                            </asp:Panel>                               
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
                    <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" ItemStyle-CssClass="EditColumn"
                        UpdateImageUrl="../Images/tick-icon.png" CancelImageUrl="../Images/arrow-undo-icon.png" InsertImageUrl="../Images/tick-icon.png" />
                    <telerik:GridTemplateColumn ItemStyle-CssClass="DeleteColumn" UniqueName="DeleteColumn" ItemStyle-Width="25px">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgDelete" runat="server" ImageUrl="~/Images/cross.png" CommandName="Delete" ToolTip="Delete"
                            OnClientClick="return confirm('Are you sure you want to delete this Discount Item?');" CommandArgument='<%# Eval("ID") %>' />
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
            </telerik:GridTableView>
        </DetailTables>
    </MasterTableView>
</telerik:RadGrid>

3 Answers, 1 is accepted

Sort by
0
Andrey
Telerik team
answered on 13 Nov 2012, 07:03 AM
Hi,

Based on the provided information I do not see what could potentially cause such behavior. Could you post the full code-behind code as well? Thus all the people who want to help you will have better understanding of your code and will be able to give you more precise answers tailored specifically for your case.


Greetings,
Andrey
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Elliott
Top achievements
Rank 2
answered on 13 Nov 2012, 07:00 PM
cheesy but cast the e.Item of the UpdateCommand event handler as a GridEditableItem
when you've done your update, set the Edit property of that object to False, then rebind the child grid
0
Richard
Top achievements
Rank 1
answered on 13 Nov 2012, 10:37 PM
I worked out what was wrong, pretty basic mistake (and a copy/paste error to be honest).

It was due to a javascript error that I didn't notice:

<SortExpressions>
    <telerik:GridSortExpression FieldName="SortOrder" SortOrder="Ascending" />
</SortExpressions>


shouldn't have been there.  I copied it from a grid that didn't have that field.  The javascript error caused this problem.  All fine now.
Tags
Grid
Asked by
Richard
Top achievements
Rank 1
Answers by
Andrey
Telerik team
Elliott
Top achievements
Rank 2
Richard
Top achievements
Rank 1
Share this question
or