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

Batch Editing Help

1 Answer 70 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Brian
Top achievements
Rank 1
Brian asked on 28 Oct 2014, 10:18 PM
Hello!

I'd like some help on two issues that I'm running into while using "EditMode=Batch" on a RadGrid that's bound to an object data source. The Grid is simple with just 3 columns and 4 hidden columns. In those 3 visible columns, only the 3rd column is the editable column. The first two columns are last_update (date) and who (updated).

For inserts, I'd like that to be a static label values with last_update = today's date and who will be the currently logged in use who is in a Session Variable. 
For updates, I was trying to display those two labels with whatever the values that were retrieved and while while inserting the actual values, I wanted to override the values of last_update with the recent date/time and whoever the new user that's editing the record for "who" column. 

This simple task of displaying this using  <ClientEvents OnBatchEditOpening="SetLabels" /> javascript was absolutely tedious task and I am not sure whether these two columns can be a Bound Column or does it have to be a template column with Label controls inside for both edit and insert? 

I've provided some code snippets here.

NOTE: This page is called inside a RadTab strip control which is part of another page with Master Page that has the radscript manager and window manager etc as well. I'm not sure whether for this reason, we encounter another issue with enabling the first three lines of javascript below. Because whenever those lines are uncommented, the "Batch Edit" mode automatically becomes "Form Edit" mode and the javascript doesn't fire.

Any help is appreciated.

Thank you!

<!DOCTYPE html>
 <html>
 <head id="Head1" runat="server">
     <title>GDBID - Invoice Notes</title>
 
        <script type="text/javascript">
             function SetLabels(sender, args) {
                 //var RowID = args.get_id(); //get Row
                 //var masterTable = document.getElementById("RadGrid1").get_masterTableView(); //get Grid
                 //var ControlX = masterTable.get_dataItems()[RowID].findElement('lblLastUpdateInsert').id; //get Control ID
                  
 
                 if (args.get_columnUniqueName() == "last_update") {
                     var cardStatusCell = sender.get_masterTableView()._getCellByColumnUniqueNameFromTableRowElement(args.get_row(), "last_update");
                     //alert(sender.get_batchEditingManager().getCellValue(cardStatusCell));
                     //sender.get_batchEditingManager().changeCellValue(cardStatusCell, "10/28/2014");
                     var txtBox = document.getElementById("RadGrid1_RadGrid1_ctl00_last_update_TB_last_update");
                     if (txtBox != null) { txtBox.value = "Hello World"; txtBox.disabled = true; }
 }
 </script>
 </head>
 
 
 
 
 <body>
     <form id="form1" runat="server">
         <telerik:RadScriptManager runat="server" ID="RadScriptManager1" EnablePartialRendering="true" EnablePageMethods="true"
                 LoadScriptsBeforeUI="true" AsyncPostBackTimeout="600" EnableScriptCombine="false" ScriptMode="Release">
             <Groups>
                 <telerik:ScriptReferenceGroup>
        <Scripts>
                         <asp:ScriptReference Path="~/Scripts/jquery-1.4.1.js" />
                         <asp:ScriptReference Path="~/Scripts/json2.js" />
                        <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
                         <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
                         <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
                         <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryPlugins.js" />
                </Scripts>
                 </telerik:ScriptReferenceGroup>
             </Groups>
         </telerik:RadScriptManager>
         <telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel1">
             <asp:Table ID="tblInvoiceNotes" runat="server" CssClass="">
                 <asp:TableRow>
                     <asp:TableCell>
                         <telerik:RadGrid ID="RadGrid1" GridLines="None" runat="server" PageSize="10" Skin="Telerik"
                             AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True"
                             AllowPaging="True" AutoGenerateColumns="False" Width="750px" DataSourceID="objDataSourceIN"
                             OnBatchEditCommand="RadGrid1_BatchEditCommand" OnUpdateCommand="RadGrid1_UpdateCommand"
                             OnInsertCommand="RadGrid1_InsertCommand" OnDeleteCommand="RadGrid1_DeleteCommand">
                             <ValidationSettings EnableModelValidation="true" EnableValidation="true" CommandsToValidate="Update,InitInsert,Insert" />
                             <MasterTableView CommandItemDisplay="Top" DataKeyNames="InvNum,InvDbId,InvNotesNum" AutoGenerateColumns="False"
                                 DataSourceID="objDataSourceIN" HorizontalAlign="NotSet" EditMode="Batch">
                                 <BatchEditingSettings EditType="Cell" OpenEditingEvent="Click" />
 <%--                                <SortExpressions><telerik:GridSortExpression FieldName="last_update" SortOrder="Descending" /></SortExpressions>--%>
                                 <Columns>
                                     <%--<telerik:GridTemplateColumn HeaderText="Date" UniqueName="last_update" HeaderStyle-Width="150px" DataField="last_update">
                                         <ItemTemplate><%# Eval("last_update") %></ItemTemplate>
                                         <EditItemTemplate>
                                             <asp:Label runat="server" ID="lblLastUpdateEdit" Text='<%#Eval("last_update")%>' Visible="true"></asp:Label>
                                         </EditItemTemplate>
                                         <InsertItemTemplate>
                                             <asp:Label runat="server" ID="lblLastUpdateInsert" Text="<%= DateTime.Now.ToShortDateString() %>" Visible="true"></asp:Label>
                                         </InsertItemTemplate>
                                     </telerik:GridTemplateColumn>
                                     <telerik:GridTemplateColumn HeaderText="Who" UniqueName="who" HeaderStyle-Width="200px" DataField="who">
                                         <ItemTemplate><%# Eval("who") %></ItemTemplate>
                                         <EditItemTemplate>
                                             <asp:Label runat="server" ID="lblWhoEdit" Text='<%#Eval("who")%>'></asp:Label>
                                         </EditItemTemplate>
                                         <InsertItemTemplate>
                                              <asp:Label runat="server" ID="lblWhoInsert" Text="" Visible="true"></asp:Label>
                                         </InsertItemTemplate>
                                     </telerik:GridTemplateColumn>--%>
                                     <telerik:GridBoundColumn DataField="last_update" HeaderStyle-Width="150px" HeaderText="Date"
                                         SortExpression="last_update" UniqueName="last_update"></telerik:GridBoundColumn>
                                     <telerik:GridBoundColumn DataField="who" HeaderStyle-Width="200px" HeaderText="Who"
                                         SortExpression="who" UniqueName="who"></telerik:GridBoundColumn>
                                     <telerik:GridBoundColumn DataField="Notes" HeaderStyle-Width="410px" HeaderText="Notes" SortExpression="Notes" UniqueName="Notes">
                                         <ColumnValidationSettings EnableRequiredFieldValidation="true">
                                             <RequiredFieldValidator ForeColor="Red" Text="*This field is required" Display="Dynamic">
                                             </RequiredFieldValidator>
                                         </ColumnValidationSettings>
                                     </telerik:GridBoundColumn>
 
                                     <telerik:GridBoundColumn DataField="InvNum" DataType="System.Int32" HeaderText="InvNum" UniqueName="InvNum" Display="false">
                                     </telerik:GridBoundColumn>
                                     <telerik:GridBoundColumn DataField="InvDbId" DataType="System.Int32" HeaderText="InvDbId" UniqueName="InvDbId" Display="false">
                                     </telerik:GridBoundColumn>
                                     <telerik:GridBoundColumn DataField="InvNotesNum" DataType="System.Int32" HeaderText="InvNotesNum" UniqueName="InvNotesNum" Display="false">
                                     </telerik:GridBoundColumn>
                                     <telerik:GridBoundColumn DataField="AllowEdit" DataType="System.String" HeaderText="AllowEdit" UniqueName="AllowEdit" Display="false">
                                     </telerik:GridBoundColumn>
 
                                     <telerik:GridButtonColumn ConfirmText="Delete this Note?" ConfirmDialogType="RadWindow"
                                         ConfirmTitle="Delete" HeaderText="Delete" HeaderStyle-Width="50px" ButtonType="ImageButton"
                                         CommandName="Delete" Text="Delete" UniqueName="DeleteColumn" ImageUrl="Images\GridRowDelete.gif">
                                     </telerik:GridButtonColumn>
                                 </Columns>
                             </MasterTableView>
                             <ClientSettings AllowKeyboardNavigation="true">
                                 <ClientEvents OnBatchEditOpening="SetLabels" />
                             </ClientSettings>
                         </telerik:RadGrid>
                         <asp:Label ID="SavedChangesList" runat="server" Text="" ForeColor="Red" Font-Names="Calibri"></asp:Label>
                     </asp:TableCell>
                 </asp:TableRow>
             </asp:Table>
         </telerik:RadAjaxPanel>
 
          <asp:ObjectDataSource ID="objDataSourceIN" runat="server" TypeName="Notes"
                 SelectMethod="GetData" InsertMethod="Insert" UpdateMethod="Update" DeleteMethod="Delete" 
                 EnablePaging="false" EnableCaching="true">
                 <SelectParameters>
                     <asp:SessionParameter Name="user" SessionField="UserName" Type="String" />
                     <asp:SessionParameter Name="location" SessionField="Location" Type="String" />
                     <asp:QueryStringParameter Name="searchinvnuminvdbid" QueryStringField="InvNumInvDbId" Type="String" />
                     <asp:Parameter Name="searchdetailnum" Type="String" DefaultValue="" />
                 </SelectParameters>
                 <InsertParameters>
                     <asp:SessionParameter Name="user" SessionField="UserName" Type="String" />
                     <asp:SessionParameter Name="location" SessionField="Location" Type="String" />
                     <asp:QueryStringParameter Name="searchinvnuminvdbid" QueryStringField="InvNumInvDbId" Type="String" />
                 </InsertParameters>
                 <UpdateParameters>
                     <asp:SessionParameter Name="user" SessionField="UserName" Type="String" />
                     <asp:SessionParameter Name="location" SessionField="Location" Type="String" />
                 </UpdateParameters>
                 <DeleteParameters>
                     <asp:SessionParameter Name="user" SessionField="UserName" Type="String" />
                     <asp:SessionParameter Name="location" SessionField="Location" Type="String" />
                 </DeleteParameters>
             </asp:ObjectDataSource>
 </form>
 </body>
 </html>

1 Answer, 1 is accepted

Sort by
0
Maria Ilieva
Telerik team
answered on 31 Oct 2014, 02:54 PM
Hi Brian,

In case you need to set default value for editable filed when batch editing is used I would suggest you to use the OnBatchEditSetEditorValue event instead of OnBatchEditOpening.

In case the filed is not editable you can use the approaches presented in the help topic below, that demonstrates the correct way for getting and setting cell values:
OnBatchEditGetCellValue
OnBatchEditSetCellValue

As for the edit mode changing issue, the problem most probably occurs due to a java script error in the presented client code. Please modify it as per the online help suggestions and see how it goes.

Regards,
Maria Ilieva
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
Grid
Asked by
Brian
Top achievements
Rank 1
Answers by
Maria Ilieva
Telerik team
Share this question
or