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

BatchEdit Command event, does not contain newvalues for RadDropDownList

4 Answers 82 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Adam
Top achievements
Rank 1
Adam asked on 16 May 2016, 04:35 PM

Here is the ASPX code:

<telerik:RadGrid ID="gvEditProjectPositions" Width="99.8%" AllowMultiRowEdit="False" AllowAutomaticDeleteCommand="false" Skin="Metro" runat="server" EnableLinqExpressions="False" GridLines="None" AutoGenerateColumns="False">
                                            <MasterTableView Width="100%" DataKeyNames="ProjectPositionID" CommandItemDisplay="Top" EnableColumnsViewState="False" EditMode="Batch">
                                                <CommandItemSettings SaveChangesText="Save to Grid" ShowCancelChangesButton="False" ShowRefreshButton="False" />
                                                <BatchEditingSettings EditType="Row" OpenEditingEvent="mousedown" />
                                                <Columns>
                                                    <telerik:GridButtonColumn HeaderStyle-Width="32px" ConfirmText="Delete this position?" ConfirmDialogType="RadWindow"
                                                        ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete"
                                                        ConfirmDialogHeight="160px" ConfirmDialogWidth="250px">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridButtonColumn>
                                                    <telerik:GridBoundColumn DataField="ProjectPositionID" HeaderText="ID" UniqueName="ProjectPositionID" Display="False" />
                                                    <telerik:GridTemplateColumn DataField="PositionName" HeaderStyle-Width="170px" HeaderText="Position Name" UniqueName="PositionName">
                                                        <ItemTemplate>
                                                            <%# Eval("PositionName")%>
                                                        </ItemTemplate>
                                                        <ItemStyle HorizontalAlign="Right" />
                                                        <EditItemTemplate>
                                                            <asp:TextBox runat="server" ID="txtEditPositionName" MaxLength="100" Width="150px" CssClass="marginFix"></asp:TextBox>
                                                        </EditItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                    <telerik:GridTemplateColumn HeaderText="Staff - Unloaded Rate" HeaderStyle-Width="215px" UniqueName="Staff" DataField="StaffMemberID">
                                                        <ItemTemplate>
                                                            <asp:Label ID="lblEditProjectPositionStaff" runat="server" />
                                                        </ItemTemplate>
                                                        <ItemStyle HorizontalAlign="Right" />
                                                        <EditItemTemplate>
                                                            <asp:ObjectDataSource ID="StaffDataSource" TypeName="ResourcePlanner.service.StaffService" SelectMethod="GetActiveStaff" runat="server"></asp:ObjectDataSource>
                                                            <telerik:RadDropDownList ID="rddlStaff" runat="server"
                                                                DataSourceID="StaffDataSource" SelectedValue="StaffMemberID" DataValueField="StaffMemberID" DataTextField="NameRate" Width="205" AutoPostBack="True">
                                                            </telerik:RadDropDownList>
                                                        </EditItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                    <telerik:GridTemplateColumn DataField="LoadedRate" HeaderText="Loaded Rate" UniqueName="LoadedRate">
                                                        <ItemTemplate>
                                                            <%# Eval("LoadedRate", "{0:0.00}")%>
                                                        </ItemTemplate>
                                                        <ItemStyle HorizontalAlign="Right" />
                                                        <EditItemTemplate>
                                                            <telerik:RadNumericTextBox ID="txtEditLoadedRate" NumberFormat="{0:0.00}" DataType="System.Decimal" CssClass="tel-num-short-box" runat="server" />
                                                        </EditItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours1Hours" HeaderText="Month 1" UniqueName="Month_1" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours2Hours" HeaderText="Month 2" UniqueName="Month_2" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours3Hours" HeaderText="Month 3" UniqueName="Month_3" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours4Hours" HeaderText="Month 4" UniqueName="Month_4" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours5Hours" HeaderText="Month 5" UniqueName="Month_5" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours6Hours" HeaderText="Month 6" UniqueName="Month_6" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours7Hours" HeaderText="Month 7" UniqueName="Month_7" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours8Hours" HeaderText="Month 8" UniqueName="Month_8" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                    <telerik:GridNumericColumn DataField="PositionHours9Hours" HeaderText="Month 9" UniqueName="Month_9" ItemStyle-CssClass="tel-num-short-box" DecimalDigits="0" MaxLength="3">
                                                        <ItemStyle HorizontalAlign="Right" />
                                                    </telerik:GridNumericColumn>
                                                </Columns>
                                            </MasterTableView>
                                            <ClientSettings>
                                                <ClientEvents OnRowDblClick="RowDblClick" />
                                            </ClientSettings>
                                        </telerik:RadGrid>

Here is the code behind:

Private Sub gvEditProjectPositions_BatchEditCommand(sender As Object, e As GridBatchEditingEventArgs) Handles gvEditProjectPositions.BatchEditCommand
    Dim bSavedSuccessfully As Boolean = False
    Dim newValues As Hashtable
    Dim oldValues As Hashtable
    Try
        Dim staffInfo As List(Of domain.Staff) = StaffService.GetActiveStaff()
        For Each command As GridBatchEditingCommand In e.Commands
            'Ignore delete commands, we don't need to verify these.
            If (command.Type <> GridBatchEditingCommandType.Delete) Then
 
                newValues = command.NewValues
                oldValues = command.OldValues
                Dim countErrors As Integer
                'Loop through and make sure the positionname is not null or nothing and that the user is active.
                countErrors = projectDetail.Positions.Where(Function(p) String.IsNullOrEmpty(newValues("PositionName")) And (p.IsActive = "T")).Count
                If countErrors > 0 Then
                    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "showErrorMessage", "showErrorMessage('Position Name cannot be left blank.');", True)
                    Exit Sub
                End If
                'Loop through and check for duplicate staff members, ignoring unassigned staffmembers, and ignoring the currently edited row.
                If (String.IsNullOrEmpty(newValues("StaffMemberID"))) Then
                    'newValues("StaffMemberID") = "0"
                End If
                countErrors = projectDetail.Positions.Where(Function(p) CLng(newValues("StaffMemberID")) <> 0 And p.StaffMemberID = CLng(newValues("StaffMemberID")) And CLng(newValues("ProjecID")) <> p.ProjectID).Count
                If (countErrors > 0) Then
                    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "showErrorMessage", "showErrorMessage('Staff Members can only appear once within a grid.');", True)
                    Exit Sub
                End If
 
            End If
        Next
 
        'dim projectService as new ProjectsService(Master.clsCU.UserId)
        For Each command As GridBatchEditingCommand In e.Commands
            Dim projectPosition As domain.ProjectPosition
            newValues = command.NewValues
            oldValues = command.OldValues
            Dim positionId As Long = newValues("ProjectPositionID")
            Dim projectPositionService As New ProjectPositionService(Master.clsCU.UserId)
            If (command.Type = GridBatchEditingCommandType.Delete) Then
                'Delete the specified project position.
                projectPosition = projectDetail.Positions.FirstOrDefault(Function(p) p.ProjectPositionID = positionId)
                projectPosition.ProjectID = projectDetail.ProjectID
                projectPositionService.Delete(projectPosition)
            ElseIf (command.Type = GridBatchEditingCommandType.Update) Then
                'Update the specified Project
                projectPosition = projectPositionService.GetProjectPositionById(positionId)
                FillPositionFromHashtable(projectPosition, newValues)
                'projectPosition.Project = projectDetail
                projectPositionService.Update(projectPosition)
                For Each pph In projectPosition.ProjectPositionHours
                    Dim pphs As New ProjectPositionHoursService(Master.clsCU.UserId)
                    pph.ProjectPositionID = positionId
                    If pph.ProjectPositionHoursID > 3000 Then
                        pphs.Update(pph)
                    End If
                Next
            ElseIf (command.Type = GridBatchEditingCommandType.Insert) Then
                'Add a new project, with these details.
                projectPosition = New ProjectPosition()
                FillPositionFromHashtable(projectPosition, newValues)
                projectPosition.ProjectID = projectDetail.ProjectID
                projectPositionService.Insert(projectPosition)
                For Each pph In projectPosition.ProjectPositionHours
                    Dim pphs As New ProjectPositionHoursService(Master.clsCU.UserId)
                    pph.ProjectPositionID = positionId
                    If pph.ProjectPositionHoursID > 3000 Then
                        pphs.Insert(pph)
                    End If
                Next
            End If
        Next
        'This used to update the project positions, but nhibernate should be doing that for us!
        'projectDetail.Update()
        bSavedSuccessfully = True
    Catch ex As Exception
        ScriptManager.RegisterStartupScript(Me, Me.GetType(), "ReShowEditModal", "ReshowModal('#editProjectPositionsModal');", True)
        Support.LogError(ex, Master.clsCU.ID, True, Me)
    Finally
        If bSavedSuccessfully = True Then
            divEditProjectPosition.Visible = False
            LoadDetail(CLng(lvResults.SelectedDataKey(0)))
            ScriptManager.RegisterStartupScript(Me, Me.GetType(), "HideEditModal", "HideModal('#editProjectPositionsModal');", True)
        Else
            ScriptManager.RegisterStartupScript(Me, Me.GetType(), "HideEditModal", "HideModal('#editProjectPositionsModal');", True)
            ScriptManager.RegisterStartupScript(Me, Me.GetType(), "ShowEditModal", "ShowModal('#editProjectPositionsModal');", True)
 
        End If
 
    End Try
 
End Sub

New values for "StaffMemberID" is always "" but should be the selected value of the RadDropDownList, oldvalues does not even contain this item.

4 Answers, 1 is accepted

Sort by
0
Adam
Top achievements
Rank 1
answered on 16 May 2016, 04:54 PM
I am also using Telerik version: 2015.2.317.0, I checked the changelog and this should not make a difference should it?
0
Adam
Top achievements
Rank 1
answered on 16 May 2016, 05:00 PM
I updated to the most recent version and this issue is still happening...
0
Adam
Top achievements
Rank 1
answered on 16 May 2016, 07:53 PM
This seems to be an issue with the raddropdownlist not getting bound to the GridTemplateColumn... anyone have a solution to this?
0
Adam
Top achievements
Rank 1
answered on 17 May 2016, 02:30 PM
I fixed this myself by changing the raddropdownlist to an asp:dropdownlist... good job telerik...
Tags
Grid
Asked by
Adam
Top achievements
Rank 1
Answers by
Adam
Top achievements
Rank 1
Share this question
or