All
I've been messing with a couple of problems far too long and I desperately need some help.
I have a RadGrid, EditMode=Batch, with 1:M DetailsTable
I have 2 major problems
1. Checkbox and edit mode. I know you can't select a checkbox. I have this kind of working using a GridTemplateColumn instead of a GridCheckboxColumn. It works fine in Chrome using code below, but in IE and FF, it still requires 2 clicks.
2. I need to add a CheckAll Button or Checkbox in the footer of each DetailsTable/GridTableView Flag column that will force all checkboxes in that single DetailsTable to checked, even if they are already checked. All samples work with MasterTable only and I can't figure out how to have it iterate in javascript through the particular DetailsTable.
PLEASE, any help or direction would be most appreciated.
<telerik:RadGrid ID="RadGrid1" runat="server" CssClass="transparentRadGrid" AllowPaging="False" AllowSorting="True" AutoGenerateColumns="False" ShowStatusBar="False" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" DataSourceID="sdsGrid1" Width="99%" ShowGroupPanel="False" AllowFilteringByColumn="False" AutoGenerateHierarchy="True" ShowHeader="false" EnableLinqExpressions="false" > <SortingSettings EnableSkinSortStyles="False" /> <MasterTableView Name="MasterTableView" CommandItemDisplay="None" DataSourceID="sdsGrid1" DataKeyNames="SubSystemID" AllowSorting="True" Width="100%" EditMode="InPlace" HierarchyDefaultExpanded="true" NoMasterRecordsText="No SubSystems have been created. Create a SubSystem by clicking the green + button above." > <DetailTables> <telerik:GridTableView AllowAutomaticInserts="false" Name="DetailTableView" TableLayout="Fixed" CommandItemDisplay="None" ShowHeader="true" ShowFooter="true" HierarchyLoadMode="ServerBind" EnableHierarchyExpandAll="true" EditMode="Batch" DataKeyNames="SystemRowID" DataSourceID="sdsGrid3" Width="100%" runat="server" NoDetailRecordsText="No Parts in this SubSystem." > <CommandItemStyle HorizontalAlign="Right" /> <CommandItemSettings ShowRefreshButton="false" ShowAddNewRecordButton="false" RefreshText="" AddNewRecordText="" CancelChangesText="" SaveChangesText="" /> <BatchEditingSettings EditType="Row" /> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="SubSystemID" MasterKeyField="SubSystemID" /> </ParentTableRelation> <Columns> <telerik:GridBoundColumn UniqueName="SystemRowID" HeaderText="ID" DataField="SystemRowID" DataType="System.Int32" ReadOnly="True" SortExpression="SystemRowID" Visible="false" />....(other fields)... <telerik:GridTemplateColumn HeaderText="Flag" SortExpression="Flag" UniqueName="Flag"> <ItemTemplate> <asp:CheckBox id="cbFlag" runat="server" checked='<%# Bind("Flag") %>' onclick="changeEditor(this);" /> </ItemTemplate> <EditItemTemplate> <asp:CheckBox ID="cbFlag" runat="server" Checked='<%# Bind("Flag") %>' /> </EditItemTemplate> <FooterTemplate> <input type="checkbox" runat="server" value="check" ID="checkbox" onclick="checkAll();" /> </FooterTemplate> <HeaderStyle Width="40px" HorizontalAlign="Center" /> <ItemStyle HorizontalAlign="Center" /> </telerik:GridTemplateColumn> </Columns> <FooterStyle /> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridBoundColumn UniqueName="SubSystemID" HeaderText="ID" DataField="SubSystemID" DataType="System.Int32" ReadOnly="True" SortExpression="SubSystemID" Display="False" /> <telerik:GridTemplateColumn HeaderText="SubSystem Name" SortExpression="SubSystemName" UniqueName="SubSystemName"> <ItemTemplate> <asp:Label ID="SubSystemName" runat="server" Text='<%# Eval("SubSystemName").ToUpper %>' /> </ItemTemplate> <InsertItemTemplate> SubSystem Name: <telerik:RadTextBox ID="SubSystemName" runat="server" Text='<%# Bind("SubSystemName") %>' Width="200px" MaxLength="100" /> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="SubSystemName" ErrorMessage="SubSystem Name is required." Text="*" /> </InsertItemTemplate> <EditItemTemplate> SubSystem Name: <telerik:RadTextBox ID="SubSystemName" runat="server" Text='<%# Bind("SubSystemName") %>' Width="200px" MaxLength="100" /> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="SubSystemName" ErrorMessage="SubSystem Name is required." Text="*" /> </EditItemTemplate> <ItemStyle Font-Bold="true" Font-Size="Larger" Width="400px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Phase" SortExpression="Phase" UniqueName="Phase"> <ItemTemplate> <asp:Label ID="Phase" runat="server" Text='<%# Eval("Phase") %>' /> </ItemTemplate> <InsertItemTemplate> Phase: <telerik:RadDropDownList ID="Phase" runat="server" AppendDataBoundItems="true" DataSourceID="sdsProjectPhases" DataTextField="Phase" DataValueField="PhaseID" SelectedValue='<%# Bind("PhaseID") %>' Skin='<%# Session("UserSkin") %>' /> </InsertItemTemplate> <EditItemTemplate> Phase: <telerik:RadDropDownList ID="Phase" runat="server" AppendDataBoundItems="true" DataSourceID="sdsProjectPhases" DataTextField="Phase" DataValueField="PhaseID" SelectedValue='<%# Bind("PhaseID") %>' Skin='<%# Session("UserSkin") %>' /> </EditItemTemplate> <ItemStyle Font-Size="Larger" /> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn UniqueName="EditCommandColumn" ButtonType="ImageButton" Exportable="false"> <ItemStyle Width="40px" /> </telerik:GridEditCommandColumn> <telerik:GridButtonColumn CommandName="Delete" Text="Delete" ButtonType="ImageButton" ConfirmText="Are you sure you want to delete this record?" Exportable="false"> <ItemStyle Width="23px" /> </telerik:GridButtonColumn> </Columns> </MasterTableView> <ClientSettings AllowKeyboardNavigation="True" AllowDragToGroup="false" EnableRowHoverStyle="true" AllowColumnsReorder="False" ReorderColumnsOnClient="false"> <%--<ClientEvents OnKeyPress="keyPress" />--%> </ClientSettings> </telerik:RadGrid> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function checkAll() { var grid = $find("<%=RadGrid1.ClientID%>"); var detailTables = grid.get_detailTables(0); setSelectedToAllDataItems(detailTables[1].get_dataItems(), true); //var items = grid.get_masterTableView().get_dataItems(); //for (var i = 0; i < detailTables.length; i++) { //alert(i); //var cb = detailTables.get_dataItems()[i].findElement("cbFlag"); //cb.checked = !cb.checked; //checkBox2.checked = obj.checked; //setSelectedToAllDataItems(detailTables[i].get_dataItems(), true); //grid.get_batchEditingManager().openRowForEdit(sender.parentElement.parentElement.parentElement); //} } function setSelectedToAllDataItems(dataItems, selected) { for (var i = 0; i < dataItems.length; i++) { alert(i); //dataitems[i].get_cell("cbDisplay"), true); //dataItems[i].set_selected(selected); var cb = dataItems[1].get_cell("Flag"); var checkBox2 = detailTables.get_dataItems()[i].findElement("cbFlag"); checkBox2.checked = obj.checked; } } function changeEditor(sender, args) { var grid = $find("<%=RadGrid1.ClientID%>"); var batchManager = grid.get_batchEditingManager(); //grid.get_batchEditingManager().openRowForEdit(sender.parentElement.parentElement); grid.get_batchEditingManager().openRowForEdit(sender.parentElement.parentElement.parentElement); sender.checked = !sender.checked; } function refreshGrid() { var masterTable = $find("<%=radGrid1.clientId%>").get_masterTableView(); masterTable.rebind(); } function saveGridChanges(sender, args) { var grid = $find("<%=RadGrid1.ClientID%>"); var batchManager = grid.get_batchEditingManager(); batchManager.saveAllChanges(); //__doPostBack("btnSaveAll", ""); } function cancelGridChanges() { var masterTable = $find("<%=radGrid1.clientId%>").get_masterTableView(); masterTable.rebind(); } </script> </telerik:RadCodeBlock>