BatchEdit Command event, does not contain newvalues for RadDropDownList

5 posts, 0 answers
  1. Adam
    Adam avatar
    11 posts
    Member since:
    Jun 2015

    Posted 16 May Link to this post

    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.

  2. Adam
    Adam avatar
    11 posts
    Member since:
    Jun 2015

    Posted 16 May Link to this post

    I am also using Telerik version: 2015.2.317.0, I checked the changelog and this should not make a difference should it?
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Adam
    Adam avatar
    11 posts
    Member since:
    Jun 2015

    Posted 16 May in reply to Adam Link to this post

    I updated to the most recent version and this issue is still happening...
  5. Adam
    Adam avatar
    11 posts
    Member since:
    Jun 2015

    Posted 16 May Link to this post

    This seems to be an issue with the raddropdownlist not getting bound to the GridTemplateColumn... anyone have a solution to this?
  6. Adam
    Adam avatar
    11 posts
    Member since:
    Jun 2015

    Posted 17 May Link to this post

    I fixed this myself by changing the raddropdownlist to an asp:dropdownlist... good job telerik...
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017