Radgrid batcheditor not working

2 posts, 0 answers
  1. Nagarajan
    Nagarajan avatar
    1 posts
    Member since:
    Oct 2013

    Posted 18 Jul Link to this post

    Hi,

    I am validation duplicate records in radgrid batch edit in client side.

    When initial grid, if duplicate date available means shows message after deleting the duplicate records, we are not able to get cell values in batchedit

    Details given below

    Clent side code
    <telerik:RadGrid ID="grdBillDetails" runat="server"
                        OnBatchEditCommand="grdBillDetails_BatchEditCommand"
                        AutoGenerateColumns="false"
                        OnNeedDataSource="grdBillDetails_NeedDataSource"
                        ClientSettings-Scrolling-AllowScroll="true"
                        Visible="true" ShowFooter="true"
                        ClientSettings-Scrolling-UseStaticHeaders="true"
                        ClientSettings-ClientEvents-OnBatchEditOpening="BeforeEdit"
                        OnPreRender="grdBillDetails_PreRender">

                        <MasterTableView DataKeyNames="billno,billdt,pharmacyname,amount" GridLines="None" HeaderStyle-Font-Bold="true" HeaderStyle-Wrap="false" ItemStyle-Wrap="true" CommandItemDisplay="Top"
                            EditMode="Batch" BatchEditingSettings-EditType="Row" ItemStyle-VerticalAlign="Top">
                            <Columns>
                                <telerik:GridTemplateColumn ItemStyle-Width="25px" HeaderStyle-Width="25px">
                                    <ItemTemplate>
                                        <textarea class="pasteHandle" contenteditable="true" onmousedown="this.innerText = ''; this.focus(); return false;" onmouseover="    this.focus(); return false;" oncontextmenu="    this.innerText = ''; return false;"></textarea>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <textarea class="pasteHandle" contenteditable="true" onmousedown="this.innerText = ''; this.focus(); return false;" onmouseover="    this.focus(); return false;" oncontextmenu="    this.innerText = ''; return false;"></textarea>
                                    </EditItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn DataField="billno" HeaderText="Bill No" HeaderStyle-Width="150px" UniqueName="billno">
                                    <ItemTemplate>
                                        <%# Eval("billno")%>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <telerik:RadTextBox ID="txtBillNo" runat="server" Width="100px"></telerik:RadTextBox><asp:RequiredFieldValidator CssClass="rfv" runat="server" ID="rfvbillno" Display="Dynamic" ControlToValidate="txtBillNo"
                                            SetFocusOnError="true" ErrorMessage="Bill No Mandatory" ValidationGroup="Medical"></asp:RequiredFieldValidator>
                                    </EditItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn DataField="billdt" HeaderText="Bill Date" HeaderStyle-Width="200px" UniqueName="billdt">
                                    <ItemTemplate>
                                        <%# Eval("billdt", "{0:dd/MM/yyyy}") %>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <telerik:RadDatePicker ID="txtBillDate" runat="server" Width="150px">
                                            <DateInput runat="server" DateFormat="dd/MM/yyyy" DisplayDateFormat="dd/MM/yyyy" />
                                            <Calendar runat="server">
                                                <SpecialDays>
                                                    <telerik:RadCalendarDay Repeatable="Today" ItemStyle-BackColor="Olive">
    </telerik:RadCalendarDay>
                                                </SpecialDays>
                                            </Calendar>
                                        </telerik:RadDatePicker>
                                        <asp:RequiredFieldValidator CssClass="rfv" runat="server" ID="rfvbillDate" Display="Dynamic" ControlToValidate="txtBillDate"
                                            SetFocusOnError="true" ErrorMessage="Bill Date Mandatory" ValidationGroup="Medical"></asp:RequiredFieldValidator>
                                    </EditItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn DataField="pharmacyname" HeaderText="Pharmacy/Doctor Name" HeaderStyle-Width="450px" UniqueName="pharmacyname">
                                    <ItemTemplate>
                                        <%# Eval("pharmacyname")%>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <telerik:RadTextBox ID="txtPharmacyName" runat="server" Width="400px" MaxLength="100">
                                            </telerik:RadTextBox>
    <asp:RequiredFieldValidator CssClass="rfv" runat="server" ID="rfvPharmacy" Display="Dynamic" ControlToValidate="txtPharmacyName" SetFocusOnError="true" ErrorMessage="Pharmacy Mandatory" ValidationGroup="Medical"></asp:RequiredFieldValidator>
                                    </EditItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridTemplateColumn DataField="amount" HeaderText="Bill Amount" FooterAggregateFormatString="{0}" FooterStyle-Font-Bold="true" Aggregate="Sum" UniqueName="amount">
                                    <ItemTemplate>
                                        <%# Eval("amount")%>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <telerik:RadNumericTextBox ID="txtBillAmount" runat="server" Width="100px" MaxLength="10">
                                            <NumberFormat DecimalDigits="2" AllowRounding="true" />
    <ClientEvents OnKeyPress="preventMoreDecimalPlaces" />
                                        </telerik:RadNumericTextBox>
                                        <asp:RequiredFieldValidator CssClass="rfv" runat="server" ID="rfvAmount" Display="Dynamic" ControlToValidate="txtBillAmount" SetFocusOnError="true" ErrorMessage="Amount Mandatory" ValidationGroup="Medical">   </asp:RequiredFieldValidator>
                                    </EditItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridButtonColumn HeaderStyle-Width="100px" ButtonType="ImageButton" ImageUrl="../../Resources/Images/cross.png"
                                    ButtonCssClass="rbEdit" UniqueName="DeleteColumn" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle"
                                    CommandName="Delete" HeaderText="Delete">
                                </telerik:GridButtonColumn>
                            </Columns>
                        </MasterTableView>
                        <ClientSettings>
                            <ClientEvents OnCommand="grdBillDetails_OnCommand"                           
                                OnRowDeleted="grdBillDetails_OnRowDeleted"
                                OnBatchEditClosed="grdBillDetails_OnBatchEditClosed"
                                 />
                        </ClientSettings>
                    </telerik:RadGrid>

    function grdBillDetails_OnCommand(sender, args) {
                    var grdbilldetails = $find("<%=grdBillDetails.ClientID %>");
                    var masterTable = grdbilldetails.get_masterTableView();
                    var dts = masterTable.get_dataItems();
                    for (var i = 0; i < dts.length - 1; i++) {
                        var prevbillno = grdbilldetails.get_batchEditingManager().getCellValue(dts[i].get_cell("billno"));
                        var prevbilldt = grdbilldetails.get_batchEditingManager().getCellValue(dts[i].get_cell("billdt"));
                        var prevpharmacyname = grdbilldetails.get_batchEditingManager().getCellValue(dts[i].get_cell("pharmacyname"));
                        for (var j = i + 1; j < dts.length; j++) {
                            curbillno = grdbilldetails.get_batchEditingManager().getCellValue(dts[j].get_cell("billno"));
                            curbilldt = grdbilldetails.get_batchEditingManager().getCellValue(dts[j].get_cell("billdt"));
                            curpharmacyname = grdbilldetails.get_batchEditingManager().getCellValue(dts[j].get_cell("pharmacyname"));
    if (prevbillno == curbillno && prevbilldt == curbilldt && prevpharmacyname == curpharmacyname) {
                                alert('Duplicates data available for Same BillNo,Billdate,Pharmacy');
                                grdbilldetails.get_batchEditingManager().openCellForEdit(dts[j].get_cell("billno"));
                                args.set_cancel(true);
                                return false;
                            }

                        }
                    }
    }

    Server Side
    foreach (GridBatchEditingCommand command in e.Commands)
                    {
                        DataRow resultRw = resultDt.NewRow();

                        if (command.Type == GridBatchEditingCommandType.Insert)
                        {

                            resultRw["BillNo"] = command.NewValues["billno"];
                            resultRw["BillDate"] = command.NewValues["billdt"];
                            resultRw["Pharmacy"] = command.NewValues["pharmacyname"];
                            resultRw["BillValue"] = command.NewValues["amount"];
                            resultRw["Ind"] = "I";

                        }

                        if (command.Type == GridBatchEditingCommandType.Update)
                        {

                                resultRw["BillNo"] = command.NewValues["billno"];
                                resultRw["BillDate"] = command.NewValues["billdt"];
                                resultRw["Pharmacy"] = command.NewValues["pharmacyname"];
                                resultRw["BillValue"] = command.NewValues["amount"];
                                resultRw["Ind"] = "U";


                        }

                        if (command.Type == GridBatchEditingCommandType.Delete)
                        {
                                resultRw["BillNo"] = command.NewValues["billno"];
                                resultRw["BillDate"] = command.NewValues["billdt"];
                                resultRw["Pharmacy"] = command.NewValues["pharmacyname"];
                                resultRw["BillValue"] = command.NewValues["amount"];
                                resultRw["Ind"] = "D";

                        }

                        resultDt.Rows.Add(resultRw);

                    }
    Screen shots
    In grid Duplicate data available. So it shows error.





    After getting duplicate row deletion. Unable to get the grid datas.

    Thanks in advance

     

  2. Konstantin Dikov
    Admin
    Konstantin Dikov avatar
    1793 posts

    Posted 21 Jul Link to this post

    Hello Nagarajan,

    I have tested the scenario in question with our latest version and the NewValues collection holds the original values of the item that was deleted and this is the expected behavior, because they are the actual values of the item that should be deleted. 

    If you have something different in mind, please provide some additional information on your requirement and the exact issue that you are facing. 

    Meanwhile you can try using the OldValues collection and see if those values will be present in it.


    Regards,
    Konstantin Dikov
    Telerik by Progress
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top