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

Insert record is not displaying in the grid

1 Answer 88 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Cecilie Nordbø
Top achievements
Rank 1
Cecilie Nordbø asked on 08 Dec 2010, 12:16 PM
Hi.
I have a grid where i manually insert a record. When the grid is empty (after clearing the list with a button), the new record is not displaying in the grid after insert is done. But when the grid has records then the insert record is displaying. Hope some have any idea why this happen. The code i am using is:

<telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" Culture="Norwegian, Bokmål (Norway)"
        GridLines="None" ShowStatusBar="True" ondatabound="RadGrid1_DataBound" oninsertcommand="RadGrid1_InsertCommand" onitemcommand="RadGrid1_ItemCommand"
        onitemdatabound="RadGrid1_ItemDataBound" onpageindexchanged="RadGrid1_PageIndexChanged" onneeddatasource="RadGrid1_NeedDataSource"
        ondeletecommand="RadGrid1_DeleteCommand" onprerender="RadGrid1_PreRender" onupdatecommand="RadGrid1_UpdateCommand" >
        <MasterTableView AutoGenerateColumns="False" CommandItemDisplay="Top" DataKeyNames="CardNumber" InsertItemPageIndexAction="ShowItemOnCurrentPage">
        <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings>
        <Columns>      
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="InfoEasy_Customer.CustomerNumber" DataType="System.String" HeaderText="Kundenr." SortExpression="InfoEasy_Customer.CustomerNumber" UniqueName="CustomerNumber" AutoPostBackOnFilter="true" ShowFilterIcon="false">
            <HeaderStyle Width="80px"></HeaderStyle><ItemStyle HorizontalAlign="Right" /></telerik:GridBoundColumn>
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="InfoEasy_Customer.Name" DataType="System.String" HeaderText="Kundenavn" SortExpression="InfoEasy_Customer.Name" UniqueName="CustomerName" ReadOnly="true" AutoPostBackOnFilter="true" ShowFilterIcon="false">
            <HeaderStyle Width="160px"></HeaderStyle></telerik:GridBoundColumn>
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="CardNumber" DataType="System.String" HeaderText="Serienr." SortExpression="CardNumber" UniqueName="CardNumber" AutoPostBackOnFilter="true" ShowFilterIcon="false">
            <HeaderStyle Width="80px"></HeaderStyle><ItemStyle HorizontalAlign="Right" /></telerik:GridBoundColumn>
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="CardStatus" DataType="System.Int32" HeaderText="Aktivt" SortExpression="CardStatus" UniqueName="CardStatus" DefaultInsertValue="">
            <FilterTemplate>
                <telerik:RadComboBox ID="ImportedFilter" runat="server" OnClientSelectedIndexChanged="ImportedFilterSelectedIndexChanged"
                            SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("CardStatus").CurrentFilterValue %>' Width="40px">
                            <Items>
                                <telerik:RadComboBoxItem Text="" Value="" />
                                <telerik:RadComboBoxItem Text="Ja" Value="1" />
                                <telerik:RadComboBoxItem Text="Nei" Value="0" />
                            </Items>
                        </telerik:RadComboBox>
                        <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                            <script type="text/javascript">
                                function ImportedFilterSelectedIndexChanged(sender, args) {
                                    var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                    var filterVal = args.get_item().get_value();
                                    if (filterVal == "") {
                                        tableView.filter("CardStatus", filterVal, "NoFilter");
                                    }
                                    else if (filterVal == "1") {
                                    tableView.filter("CardStatus", "1", "EqualTo");
                                    }
                                    else if (filterVal == "0") {
                                    tableView.filter("CardStatus", "0", "EqualTo");
                                    }
                                }
                            </script>
                        </telerik:RadScriptBlock>
            </FilterTemplate>
            <HeaderStyle Width="55px"></HeaderStyle><ItemStyle HorizontalAlign="center"/></telerik:GridBoundColumn>       
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="VehicleRegistrationNumber" HeaderText="Reg.nr." SortExpression="VehicleRegistrationNumber" UniqueName="VehicleRegistrationNumber" AutoPostBackOnFilter="true" ShowFilterIcon="false">
            <HeaderStyle Width="90px"></HeaderStyle></telerik:GridBoundColumn>       
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="CustomerCardGroup.Name" HeaderText="Kundens sortering" SortExpression="CustomerCardGroup.Name" UniqueName="GroupName" AutoPostBackOnFilter="true" ShowFilterIcon="false">
            <HeaderStyle Width="130px"></HeaderStyle></telerik:GridBoundColumn>
            <telerik:GridDateTimeColumn FilterControlWidth="95%" DataField="IssuedDate" DataType="System.DateTime" HeaderText="Utlevert" SortExpression="IssuedDate" UniqueName="IssuedDate" AutoPostBackOnFilter="true" ShowFilterIcon="false">           
            <HeaderStyle Width="105px"></HeaderStyle></telerik:GridDateTimeColumn>         
            <telerik:GridBoundColumn FilterControlWidth="95%" DataField="Comment" HeaderText="Kommentar" SortExpression="Comment" UniqueName="Comment" AutoPostBackOnFilter="true" ShowFilterIcon="false">
            <HeaderStyle Width="130px"></HeaderStyle></telerik:GridBoundColumn>
            <telerik:GridTemplateColumn UniqueName="Selected" HeaderText="Velg" AllowFiltering="false" HeaderStyle-Width="40px" HeaderTooltip="Brukes for Ã¥ huke av hvilken rad som skal gjelde ved felles handlinger">
                    <ItemTemplate>
                        <asp:CheckBox ID="SelectedCheckBox" runat="server" Checked='<%#( (Container is GridDataInsertItem) ? false: Eval("IsSelected")) %>' ToolTip="Huke av ved felles handlinger"/>           
                    </ItemTemplate>
            <HeaderStyle HorizontalAlign="Center" /><ItemStyle HorizontalAlign="center"/></telerik:GridTemplateColumn>                    
            <telerik:GridEditCommandColumn CancelText="Avbryt" EditText="Endre" InsertText="Sett inn" UpdateText="Oppdater"><HeaderStyle Width="50px"></HeaderStyle><ItemStyle HorizontalAlign="Right" /></telerik:GridEditCommandColumn>
            <telerik:GridButtonColumn HeaderStyle-Width="40px" CommandName="Delete" Text="Slett" UniqueName="column1" ConfirmDialogType="RadWindow" ConfirmText="Er du sikker pÃ¥ at du vil slette elementet?" ConfirmTitle="Bekreft sletting"><HeaderStyle Width="40px"></HeaderStyle></telerik:GridButtonColumn>     
        </Columns>   
        <EditFormSettings EditFormType="Template">
           <EditColumn UniqueName="EditCommandColumn1" ></EditColumn>
           <FormTemplate>                
                <div style="padding:10px;">         
                <table>
                    <tr>
                        <td><asp:Label runat="server" ID="Label1" Text="Kundenr."></asp:Label></td>
                        <td><telerik:RadNumericTextBox runat="server" ID="CustomerNumber" Width="70px"><NumberFormat DecimalDigits="0"/></telerik:RadNumericTextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1" Text="*" ForeColor="Red" ControlToValidate="CustomerNumber" runat="server"/></td>                       
                        <td><asp:Label runat="server" ID="Label3" Text="Serienr."></asp:Label></td>
                        <td><telerik:RadNumericTextBox runat="server" ID="CardNumber" Text='<%# Bind("CardNumber") %>' Width="70px"><NumberFormat DecimalDigits="0"/></telerik:RadNumericTextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator2" Text="*" ForeColor="Red" ControlToValidate="CardNumber" runat="server"/></td>                                                                                  
                        <td><asp:Label runat="server" ID="Label6" Text="Utlevert"></asp:Label></td>
                        <td><telerik:RadDatePicker runat="server" ID="IssuedDate" Width="105px"></telerik:RadDatePicker><asp:RequiredFieldValidator ID="RequiredFieldValidator3" Text="*" ForeColor="Red" ControlToValidate="IssuedDate" runat="server"/></td>                       
                        <td><asp:Label runat="server" ID="Label4" Text="Reg.nr." ToolTip="Max 15tegn"></asp:Label></td>
                        <td><telerik:RadTextBox ID="RegNumber" runat="server" Width="130px" Text='<%# Bind("VehicleRegistrationNumber") %>' MaxLength="15"></telerik:RadTextBox></td>                       
                        <td><asp:Label runat="server" ID="Label7" Text="Kommentar"></asp:Label></td>
                        <td rowspan="2" valign="top"><telerik:RadTextBox ID="Comment" runat="server" Text='<%# Bind("Comment") %>' Height="47px" Width="250px" TextMode="MultiLine" MaxLength="255"></telerik:RadTextBox></td>                       
                    </tr>
                    <tr>
                        <td colspan="2"></td>
                        <td><asp:Label runat="server" ID="Label2" Text="Aktivt"></asp:Label></td>
                        <td><telerik:RadComboBox runat="server" ID="RadComboBox1" Width="40px" DataValueField="CardStatus" SelectedValue='<%#Bind("CardStatus") %>' HighlightTemplatedItems="true">
                            <Items>
                                <telerik:RadComboBoxItem Value="1" Text="Ja" runat="server" />
                                <telerik:RadComboBoxItem Value="0" Text="Nei" runat="server"/>
                            </Items>
                            </telerik:RadComboBox>
                        </td>                         
                        <td><asp:Label runat="server" ID="Label8" Text="Gyldig"></asp:Label></td>
                        <td><telerik:RadDatePicker runat="server" ID="ValidToDate" Width="105px"></telerik:RadDatePicker><asp:RequiredFieldValidator ID="RequiredFieldValidator4" Text="*" ForeColor="Red" ControlToValidate="ValidToDate" runat="server"/></td>                                               
                        <td><asp:Label runat="server" ID="Label5" Text="Sortering"></asp:Label></td>
                        <td><telerik:RadTextBox ID="GroupName" runat="server" Width="130px" MaxLength="255"></telerik:RadTextBox></td>
                        <td colspan="2"></td>
                    </tr>
                </table>               
                <div id="Buttons" style="text-align:right;">                 
                        <asp:LinkButton ID="LbtnUpdate" Text='<%# (Container is GridEditFormInsertItem) ? "Sett inn" : "Oppdater" %>' runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>' TabIndex="40"></asp:LinkButton
                        <asp:LinkButton ID="LbtnCancel" Text="Avbryt" runat="server" CausesValidation="False" CommandName="Cancel" TabIndex="41"></asp:LinkButton>                       
                </div>
            </div>               
            </FormTemplate>
            </EditFormSettings>
            <NoRecordsTemplate><div>Det er ingen elementer Ã¥ vise</div></NoRecordsTemplate
        </MasterTableView>    
        <ClientSettings EnableRowHoverStyle="true">                    
            <ClientEvents OnRowDblClick="RowDblClick" />
            <Selecting AllowRowSelect="true"/>
            <Resizing AllowColumnResize="true"/>
        </ClientSettings
        <SortingSettings EnableSkinSortStyles="False" SortedAscToolTip="Sortert stigende" SortedDescToolTip="Sortet synkende" SortToolTip="Klikk her for Ã¥ sortere" />     
    </telerik:RadGrid>

  protected void RadGrid1_InsertCommand(object source, GridCommandEventArgs e)
 {          
            if (!(e.Item is GridEditFormInsertItem))
                return;

            var insertItem = (GridEditFormInsertItem)e.Item;
            FcCustomerCard controller = GetController();
            string message = controller.Save(insertItem, true);
            if (!string.IsNullOrEmpty(message))
            {
                hasActionFailed = true;
                DisplayMessage("Elementet kan ikke settes inn. Ã…rsak: " + message);
                e.Canceled = true;
            }
            else
            {
                DisplayMessage("Insettingen var vellykket.");                   
            }
        }

  protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {      
            RadGrid1.DataSource = GetCardList();
        }

 protected void clrFilters_Click(object sender, EventArgs e)
        {
            foreach (GridColumn column in RadGrid1.MasterTableView.Columns)
            {
                column.CurrentFilterFunction = GridKnownFunction.NoFilter;
                column.CurrentFilterValue = string.Empty;
            }
            SetFilterExpression();
            RadGrid1.MasterTableView.Rebind();
        }

 private void SetFilterExpression()
        {
            RadGrid1.MasterTableView.FilterExpression = "([CardNumber] = " + value + ") ";
            RadGrid1.EnableLinqExpressions = false;
            RadGrid1.GroupingSettings.CaseSensitive = false;
            GridColumn column = RadGrid1.MasterTableView.GetColumnSafe("CardNumber");            
            column.CurrentFilterFunction = GridKnownFunction.EqualTo;                
            RadGrid1.MasterTableView.Rebind();
        }

1 Answer, 1 is accepted

Sort by
0
Martin
Telerik team
answered on 13 Dec 2010, 04:12 PM
Hello Cecilie Nordbø,

I tried to reproduce the issue locally but without success. Attached to this message is a small sample that runs as expected on my side. Please review it and let me know how it goes.

Note that by design RadGrid rebinds itself after insert operation is performed. However if the operation is canceled (by setting e.Canceled="true" inside the InsertCommand handler) the grid will not rebind and will not display the inserted data. Based on that, I would suggest that you check whether the following line (marked in yellow) is not hit when a new item is inserted:

protected void RadGrid1_InsertCommand(object source, GridCommandEventArgs e)
{         
            if (!string.IsNullOrEmpty(message))
            {
                hasActionFailed = true;
                DisplayMessage("Elementet kan ikke settes inn. Ã…rsak: " + message);
                e.Canceled = true;
            }
            ...
}

I hope this helps.

All the best,
Martin
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
Tags
Grid
Asked by
Cecilie Nordbø
Top achievements
Rank 1
Answers by
Martin
Telerik team
Share this question
or