I have a hierarchial grid with 3 levels. Only the deepest level is editable. Instead of having a link button on each row, I have checkboxes and a link button in the CommandItemDisplay to allow for edit mode of multiple rows at once.
When selecting 1 row at a time for editing, everything works fine. The problem is when I go into edit mode for multiple rows. For example, I have 2 rows and both are checked. The first row doesn't go into edit mode, but the second row does.
The code executes without errors and all selected rows are getting the Edit property set to true, but after rebinding I do not get the expected results of 2 rows in edit mode.
Here is my code:
Please advise.
Rob
When selecting 1 row at a time for editing, everything works fine. The problem is when I go into edit mode for multiple rows. For example, I have 2 rows and both are checked. The first row doesn't go into edit mode, but the second row does.
The code executes without errors and all selected rows are getting the Edit property set to true, but after rebinding I do not get the expected results of 2 rows in edit mode.
Here is my code:
Protected Sub grdOR_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdOR.PreRender |
If Not ViewState("grdOR_EditIndex") Is Nothing Then |
Dim Keys() As String = ViewState("grdOR_EditIndex").ToString.Split(",") |
Dim nestedTableViewSKU As GridTableView = CType(grdOR.MasterTableView.Items(Convert.ToInt32(Keys(0))), GridDataItem).ChildItem.NestedTableViews(0) |
Dim nestedTableViewStore As GridTableView = CType(nestedTableViewSKU.Items(Convert.ToInt32(Keys(1))), GridDataItem).ChildItem.NestedTableViews(0) |
For Each item As GridDataItem In nestedTableViewStore.Items |
Dim chk As CheckBox = DirectCast(item("chkEdit").Controls(0), CheckBox) |
If chk.Checked Then |
item.Edit = True |
End If |
Next |
nestedTableViewStore.Rebind() |
End If |
End Sub |
Protected Sub grdOR_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles grdOR.ItemCommand |
Select Case e.CommandName |
Case "MULTIEDIT" |
Dim SKUItem As GridDataItem = CType(e.Item.OwnerTableView.ParentItem, GridDataItem) |
Dim StyleItem As GridDataItem = CType(SKUItem.OwnerTableView.ParentItem, GridDataItem) |
ViewState("grdOR_EditIndex") = StyleItem.ItemIndex & "," & SKUItem.ItemIndex |
End Select |
End Sub |
<telerik:RadGrid ID="grdOR" runat="server" AutoGenerateColumns="False" GridLines="None" Width="100%" Skin="WebBlue" AllowMultiRowSelection="True" > |
<MasterTableView DataKeyNames="STYL_SEQ_NUM,RVD_QTY" AllowAutomaticUpdates="True" NoDetailRecordsText="No SKU records to display." NoMasterRecordsText="No Style records to display." EditMode="InPlace"> |
<DetailTables> |
<telerik:GridTableView runat="server" DataKeyNames="STYL_SEQ_NUM,MSC_MDSE_NUM" NoDetailRecordsText="No Store records to display." > |
<RowIndicatorColumn> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn Visible="True"> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridBoundColumn DataField="CLR_CDE" HeaderText="Color Code" UniqueName="CLR_CDE" > |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="CLR_DCD" HeaderText="Color Desc" UniqueName="CLR_DCD" > |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="STYL_SEQ_NUM" HeaderText="SSN" UniqueName="STYL_SEQ_NUM" > |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="MSC_MDSE_NUM" HeaderText="MSC" UniqueName="MSC_MDSE_NUM" > |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="RVD_QTY" HeaderText="RVD_QTY" UniqueName="RVD_QTY"> |
<HeaderStyle Width="50px" /> |
<ItemStyle Width="50px" /> |
</telerik:GridBoundColumn> |
<telerik:GridButtonColumn ButtonType="PushButton" Text="Zero" UniqueName="ZERO" CommandName="ZEROSKU"> |
<HeaderStyle Width="50px" /> |
<ItemStyle Width="50px" /> |
</telerik:GridButtonColumn> |
</Columns> |
<DetailTables> |
<telerik:GridTableView runat="server" DataKeyNames="STOR_CDE,MSC_MDSE_NUM,RVD_QTY" EditMode="InPlace" AllowAutomaticUpdates="True" CommandItemDisplay="Top" Width="100%" > |
<RowIndicatorColumn> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridClientSelectColumn UniqueName="chkEdit" /> |
<%--<telerik:GridTemplateColumn UniqueName="CheckCol" HeaderText="CheckCol" > |
<ItemTemplate> |
<asp:CheckBox ID="chkStore" runat="server" /> |
</ItemTemplate> |
</telerik:GridTemplateColumn> --%> |
<telerik:GridTemplateColumn DataField="STOR_CDE" HeaderText="Store" UniqueName="STOR_CDE" > |
<ItemTemplate> |
<%#Eval("STOR_CDE")%> |
</ItemTemplate> |
<EditItemTemplate> |
<%#Eval("STOR_CDE")%> |
</EditItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn DataField="ORDR_QTY" HeaderText="Quantity" UniqueName="ORDR_QTY"> |
<ItemTemplate> |
<%#Eval("ORDR_QTY")%> |
</ItemTemplate> |
<EditItemTemplate> |
<%#Eval("ORDR_QTY")%> |
</EditItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn DataField="MSC_MDSE_NUM" HeaderText="MSC" UniqueName="MSC_MDSE_NUM"> |
<ItemTemplate> |
<%#Eval("MSC_MDSE_NUM")%> |
</ItemTemplate> |
<EditItemTemplate> |
<%# Eval("MSC_MDSE_NUM") %> |
</EditItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn DataField="RVD_QTY" HeaderText="RVD_QTY" UniqueName="RVD_QTY"> |
<ItemTemplate> |
<%#Eval("RVD_QTY")%> |
</ItemTemplate> |
<EditItemTemplate> |
<asp:TextBox ID="txtRevisedQuantity" runat="server" Text='<%# Bind("RVD_QTY") %>' /> |
</EditItemTemplate> |
<HeaderStyle Width="110px" /> |
<ItemStyle Width="110px" /> |
</telerik:GridTemplateColumn> |
</Columns> |
<EditFormSettings> |
<EditColumn UniqueName="EditCommandColumn1"> |
</EditColumn> |
</EditFormSettings> |
<CommandItemTemplate> |
<asp:LinkButton ID="btnEdit" runat="server" CommandName="MULTIEDIT" Text="Edit" Visible="true" OnClientClick="setEditMode('EDIT')" /> |
<asp:LinkButton ID="btnUpdate" runat="server" CommandName="MULTIUPDATE" Text="Update" Visible="false" OnClientClick="setEditMode('UPDATE')" /> |
<asp:LinkButton ID="btnCancel" runat="server" CommandName="MULTICANCEL" Text="Cancel" Visible="false" OnClientClick="setEditMode('CANCEL')" /> |
</CommandItemTemplate> |
</telerik:GridTableView> |
</DetailTables> |
</telerik:GridTableView> |
</DetailTables> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn Visible="True"> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridBoundColumn DataField="ITEM_DES" HeaderText="Desc" UniqueName="ITEM_DES"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="VEN_STYL_NUM" HeaderText="Style" UniqueName="VEN_STYL_NUM"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="STYL_SEQ_NUM" HeaderText="SSN" UniqueName="STYL_SEQ_NUM"> |
</telerik:GridBoundColumn> |
<telerik:GridTemplateColumn DataField="RVD_QTY" HeaderText="RVD_QTY" UniqueName="RVD_QTY"> |
<ItemTemplate> |
<%#Eval("RVD_QTY")%> |
</ItemTemplate> |
<EditItemTemplate> |
<asp:TextBox ID="txtRevisedStyle" runat="server" Text='<%# Bind("RVD_QTY") %>' /> |
</EditItemTemplate> |
<HeaderStyle Width="50px" /> |
<ItemStyle Width="50px" /> |
</telerik:GridTemplateColumn> |
<telerik:GridButtonColumn ButtonType="PushButton" Text="Zero" UniqueName="ZERO" CommandName="ZEROSTYLE"> |
<HeaderStyle Width="50px" /> |
<ItemStyle Width="50px" /> |
</telerik:GridButtonColumn> |
</Columns> |
<EditFormSettings > |
<PopUpSettings Modal="True" /> |
</EditFormSettings> |
</MasterTableView> |
<ClientSettings> |
<Scrolling AllowScroll="True" UseStaticHeaders="True" /> |
<Selecting AllowRowSelect="True" /> |
<ClientEvents OnRowSelected="RowSelected" OnRowDeselected="RowDeselected" OnGridCreated="GridCreated"/> |
</ClientSettings> |
</telerik:RadGrid> |
Please advise.
Rob