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

drag and drop not working into radgrid

0 Answers 126 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Dhamodharan
Top achievements
Rank 1
Dhamodharan asked on 07 Apr 2011, 04:25 PM
Hi,

I am using drag and drop into my radgrid. but dragged item not set to dropped items. but dropped item selected.

Please check my code and let me know what i have missed.

 <telerik:RadGrid ID="rgCustomhrfields" runat="server" Width="738px" HeaderStyle-Font-Bold="true"
                    HeaderStyle-HorizontalAlign="Center" >
                    <ValidationSettings CommandsToValidate="PerformInsert,Update" ValidationGroup="Validate" />
                    <ClientSettings AllowRowsDragDrop="true">
                        <Selecting AllowRowSelect="true" EnableDragToSelectRows="true" />
                        <ClientEvents OnRowDropping="onRowDropping" />
                    </ClientSettings>
                    <MasterTableView CommandItemDisplay="Top" AllowMultiColumnSorting="true" AutoGenerateColumns="false"
                        AllowPaging="true" AllowSorting="true" EditMode="InPlace" DataKeyNames="CUST_HR_FLD_ID"
                        PagerStyle-Mode="NextPrevNumericAndAdvanced" ExpandCollapseColumn-ButtonType="ImageButton"
                        ExpandCollapseColumn-CollapseImageUrl="Picture/LegendImages/SingleMinus.gif"
                        ExpandCollapseColumn-ExpandImageUrl="Picture/LegendImages/SinglePlus.gif">
                        <NoRecordsTemplate>
                            <div style="text-align: center">
                                There are no records to display</div>
                        </NoRecordsTemplate>
                        <CommandItemSettings AddNewRecordText="Add Custom HR Fields" ShowRefreshButton="false" />
                        <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
                        </RowIndicatorColumn>
                        <Columns>
                            <telerik:GridDragDropColumn Visible="true">
                            </telerik:GridDragDropColumn>
                            <telerik:GridEditCommandColumn UniqueName="EditColumn" ButtonType="ImageButton" ItemStyle-Wrap="false"
                                InsertText="Save" UpdateText="Save" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top"
                                ItemStyle-Width="5px">
                                <ItemStyle HorizontalAlign="Center" VerticalAlign="Top" Wrap="False" Width="5px">
                                </ItemStyle>
                            </telerik:GridEditCommandColumn>
                            <telerik:GridTemplateColumn UniqueName="Name" SortExpression="cust_hr_fld_name" HeaderText="Name">
                                <ItemStyle VerticalAlign="Top" />
                                <ItemTemplate>
                                    <asp:Label ID="lblName" runat="server" Text='<%#Eval("cust_hr_fld_name") %>' SkinID="NoBold">
                                    </asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <telerik:RadTextBox ID="rtbName" runat="server" Text='<%#Eval("cust_hr_fld_name") %>'
                                        MaxLength="40">
                                    </telerik:RadTextBox>
                                    <asp:Label ID="lblManName" runat="server" ForeColor="Red" Text="*<br/>"></asp:Label>
                                    <asp:RequiredFieldValidator ID="rfvName" runat="server" ControlToValidate="rtbName"
                                        Display="Dynamic" ValidationGroup="Validate" ErrorMessage="Please enter Name"></asp:RequiredFieldValidator>
                                </EditItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridTemplateColumn UniqueName="Type" SortExpression="CUST_HR_FLD_TYPE" HeaderText="Type">
                                <ItemStyle VerticalAlign="Top" />
                                <ItemTemplate>
                                    <asp:Label ID="lblType" runat="server" Text='<%#Eval("cust_hr_fld_type") %>' SkinID="NoBold">
                                    </asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:Label ID="lblType" runat="server" Text='<%#Eval("CUST_HR_FLD_TYPE") %>' SkinID="NoBold"
                                        Visible="false">
                                    </asp:Label>
                                    <asp:Label ID="lblTypeList" runat="server" Text='<%#Eval("cust_hr_fld_type") %>'
                                        SkinID="NoBold" Visible='<%# IIf((TypeOf(Container) is GridDataInsertItem), "False", "True")%>'>>
                                    </asp:Label>
                                    <telerik:RadComboBox ID="rcbType" runat="server" Width="100px" SelectedValue='<%#Eval("cust_hr_fld_type") %>'
                                        Visible='<%# IIf((TypeOf(Container) is GridDataInsertItem), "True", "False")%>'>
                                        <Items>
                                            <telerik:RadComboBoxItem runat="server" Text="DATE" Value="DATE" />
                                            <telerik:RadComboBoxItem runat="server" Text="SELECTION" Value="SELECTION" />
                                            <telerik:RadComboBoxItem runat="server" Text="NUMBER" Value="NUMBER" />
                                            <telerik:RadComboBoxItem runat="server" Text="CURRENCY" Value="CURRENCY" />
                                            <telerik:RadComboBoxItem runat="server" Text="FREETEXT" Value="FREETEXT" />
                                        </Items>
                                    </telerik:RadComboBox>
                                </EditItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridTemplateColumn UniqueName="Display Order" SortExpression="DISPLAY_ORDER"
                                HeaderText="Display<br/>Order">
                                <ItemTemplate>
                                    <asp:Label ID="lblDisplayOrder" runat="server" Text='<%#Eval("DISPLAY_ORDER") %>'
                                        SkinID="NoBold">
                                    </asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <telerik:RadNumericTextBox ID="rntbDisplayOrder" runat="server" Text='<%#Eval("DISPLAY_ORDER") %>'
                                        MaxLength="4" EnabledStyle-HorizontalAlign="Right">
                                    </telerik:RadNumericTextBox>
                                    <asp:Label ID="lblManDis" runat="server" ForeColor="Red" Text="*<br/>"></asp:Label>
                                    <asp:RequiredFieldValidator ID="rfvDisplayOrder" runat="server" ControlToValidate="rntbDisplayOrder"
                                        Display="Dynamic" ValidationGroup="Validate" ErrorMessage="Please enter Display Order"></asp:RequiredFieldValidator>
                                </EditItemTemplate>
                                <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" />
                            </telerik:GridTemplateColumn>
                            <telerik:GridTemplateColumn UniqueName="Active" SortExpression="active_flag" HeaderText="Active?">
                                <ItemTemplate>
                                    <asp:CheckBox ID="chkLblFlag" runat="server" Checked='<%# IIF( Eval("active_flag")is DBNull.value,"False",Eval("active_flag")) %>'
                                        onclick="return DoNotAllowToEdit('', this )" />
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:CheckBox ID="chkActive" runat="server" Checked='<%# IIF( Eval("active_flag")is DBNull.value,"False",Eval("active_flag")) %>' />
                                </EditItemTemplate>
                                <ItemStyle HorizontalAlign="Center" VerticalAlign="Top" />
                            </telerik:GridTemplateColumn>
                            <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ImageUrl="~/Picture/delete.ico"
                                Text="Delete" UniqueName="DeleteCommandColumn">
                                <HeaderStyle Width="5px" />
                                <ItemStyle VerticalAlign="Top" HorizontalAlign="Center" Width="5px" />
                            </telerik:GridButtonColumn>
                        </Columns>
                      
                        <NestedViewSettings DataSourceID="sdsSelection">
                            <ParentTableRelation>
                                <telerik:GridRelationFields DetailKeyField="CUST_HR_FLD_ID" MasterKeyField="CUST_HR_FLD_ID" />
                            </ParentTableRelation>
                        </NestedViewSettings>
                        <NestedViewTemplate>
                            <telerik:RadGrid ID="rgSelectZone" runat="server" Width="300px" HeaderStyle-Font-Bold="true"
                                HeaderStyle-HorizontalAlign="Center" DataSourceID="sdsSelection" OnItemCommand="rgSelectZone_ItemCommand"
                                OnItemDataBound="rgSelectZone_ItemDataBound">
                                <ValidationSettings CommandsToValidate="PerformInsert,Update" ValidationGroup="Validate" />
                                <ClientSettings AllowRowsDragDrop="true">
                                    <Selecting AllowRowSelect="true" EnableDragToSelectRows="false" />
                                </ClientSettings>
                                <MasterTableView CommandItemDisplay="Top" AutoGenerateColumns="false" AllowSorting="true"
                                    EditMode="InPlace" DataKeyNames="CUST_SEL_LIST_ID,CUST_HR_FLD_ID">
                                    <NoRecordsTemplate>
                                        <div style="text-align: center">
                                            There are no records to display</div>
                                    </NoRecordsTemplate>
                                    <CommandItemSettings AddNewRecordText="Add List of Values" ShowRefreshButton="false" />
                                    <Columns>
                                        <telerik:GridEditCommandColumn UniqueName="EditColumn" ButtonType="ImageButton" ItemStyle-Wrap="false"
                                            InsertText="Save" UpdateText="Save" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top"
                                            ItemStyle-Width="5px">
                                        </telerik:GridEditCommandColumn>
                                        <telerik:GridTemplateColumn HeaderText="List of Values" UniqueName="ListofValues"
                                            SortExpression="SEL_LIST_VALUE">
                                            <ItemTemplate>
                                                <asp:Label ID="lblListZone" runat="server" Text='<%#Eval("SEL_LIST_VALUE") %>' SkinID="NoBold">
                                                </asp:Label>
                                            </ItemTemplate>
                                            <EditItemTemplate>
                                                <telerik:RadTextBox ID="rtbListZone" runat="server" Text='<%#Eval("SEL_LIST_VALUE") %>'
                                                    MaxLength="60" Width="150px">
                                                </telerik:RadTextBox>
                                                <asp:Label ID="lblManList" runat="server" ForeColor="Red" Text="*<br/>"></asp:Label>
                                                <asp:RequiredFieldValidator ID="rfvListZone" runat="server" ControlToValidate="rtbListZone"
                                                    Display="Dynamic" ValidationGroup="Validate" ErrorMessage="Please enter List of Values"></asp:RequiredFieldValidator>
                                            </EditItemTemplate>
                                        </telerik:GridTemplateColumn>
                                        <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ImageUrl="~/Picture/delete.ico"
                                            Text="Delete" UniqueName="DeleteCommandColumn">
                                            <HeaderStyle Width="5px" />
                                            <ItemStyle VerticalAlign="Top" HorizontalAlign="Center" Width="5px" />
                                        </telerik:GridButtonColumn>
                                    </Columns>
                                </MasterTableView>
                            </telerik:RadGrid>
                        </NestedViewTemplate>
                        <EditFormSettings>
                            <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                            </EditColumn>
                        </EditFormSettings>
                    </MasterTableView>
                    <HeaderStyle HorizontalAlign="Center" Font-Bold="True"></HeaderStyle>
                    <FilterMenu EnableImageSprites="False">
                    </FilterMenu>
                    <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
                    </HeaderContextMenu>
                </telerik:RadGrid>

 <asp:SqlDataSource ID="sdsSelection" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnStr %>"
        ProviderName="System.Data.OracleClient" SelectCommand="SELECT
    cust_sel_list_id
    , sel_list_value
    , cust_hr_fld_id
FROM
    CUSTOM_HR_FIELD_SEL_LIST_VIEW
WHERE
    cust_hr_fld_id=:CUST_HR_FLD_ID
ORDER BY
    SEL_LIST_VALUE
        ">
        <SelectParameters>
            <asp:Parameter Name="CUST_HR_FLD_ID" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sdsCustomHrFields" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnStr %>"
        ProviderName="<%$ ConnectionStrings:MyConnStr.ProviderName %>" SelectCommand="SELECT
    cust_hr_fld_id
    , cust_hr_fld_type
    , display_order
    , cust_hr_fld_name
    , DECODE(active_flag
                , 'Y', 'True'
                , 'False')   active_flag   
FROM
    CLIENT_CUSTOM_HR_FIELDS_VIEW
WHERE
     grp_id =:P_GRP_ID">
        <SelectParameters>
            <asp:SessionParameter Name="P_GRP_ID" SessionField="grp_id" />
        </SelectParameters>
    </asp:SqlDataSource>


Vb code
----------

Protected Sub rgCustomhrfields_RowDrop(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridDragDropEventArgs) Handles rgCustomhrfields.RowDrop
        Dim CustomOrders As IList(Of Order)
        CustomOrders = CustomFields
        Dim order As Order = GetOrder(CustomOrders, Convert.ToInt32(e.DestDataItem.GetDataKeyValue("CUST_HR_FLD_ID")))
        Dim destinationIndex As Integer = CustomOrders.IndexOf(order)

        If ((e.DropPosition = GridItemDropPosition.Above) _
                               AndAlso (e.DestDataItem.ItemIndex > e.DraggedItems(0).ItemIndex)) Then
            destinationIndex = (destinationIndex - 1)
        End If
        If ((e.DropPosition = GridItemDropPosition.Below) _
                AndAlso (e.DestDataItem.ItemIndex < e.DraggedItems(0).ItemIndex)) Then
            destinationIndex = (destinationIndex + 1)
        End If
        Dim ordersToMove As New List(Of Order)()
        For Each draggedItem As GridDataItem In e.DraggedItems
            Dim tmpOrder As Order = GetOrder(CustomOrders, Convert.ToInt32(e.DestDataItem.GetDataKeyValue("CUST_HR_FLD_ID")))
            If tmpOrder IsNot Nothing Then
                ordersToMove.Add(tmpOrder)
            End If
        Next
        For Each orderToMove As Order In ordersToMove
            CustomOrders.Remove(orderToMove)
            CustomOrders.Insert(destinationIndex, orderToMove)
        Next

        CustomFields = CustomOrders
        rgCustomhrfields.Rebind()
        '' e.DestDataItem.Selected = True
        Dim destinationItemIndex As Integer = destinationIndex - (rgCustomhrfields.PageSize * rgCustomhrfields.CurrentPageIndex)
        e.DestinationTableView.Items(destinationItemIndex).Selected = True
    End Sub

    Private Shared Function GetOrder(ByVal ordersToSearchIn As IEnumerable(Of Order), ByVal display_order As String) As Order
        For Each order As Order In ordersToSearchIn
            If order.CUST_HR_FLD_ID = display_order Then
                Return order
            End If
        Next
        Return Nothing
    End Function

    Protected Property CustomFields() As IList(Of Order)
        Get
            Try
                Dim obj As Object
                obj = Session("CustomFields_VB")
                'If obj Is Nothing Then
                obj = GetOrders()
                Session("CustomFields_VB") = obj
                'End If
                Return DirectCast(obj, IList(Of Order))
            Catch ex As Exception
                Session("CustomFields_VB") = Nothing
            End Try
            Return New List(Of Order)
        End Get
        Set(ByVal value As IList(Of Order))
            Session("CustomFields_VB") = value
        End Set
    End Property

    Protected Class Order
        Private _Name As String
        Private _Type As String
        Private _displayorder As Integer
        Private _Active As String
        Private _CUST_HR_FLD_ID As String
        Public Sub New(ByVal CustHRFieldID As String, ByVal Type As String, ByVal displayorder As Integer, ByVal Name As String, ByVal Active As String)
            _Name = Name
            _Type = Type
            _displayorder = displayorder
            _Active = Active
            _CUST_HR_FLD_ID = CustHRFieldID
        End Sub

        Public ReadOnly Property display_order() As Integer
            Get
                Return _displayorder
            End Get
        End Property

        Public ReadOnly Property cust_hr_fld_type() As String
            Get
                Return _Type
            End Get
        End Property
        Public ReadOnly Property cust_hr_fld_name() As String
            Get
                Return _Name
            End Get
        End Property

        Public ReadOnly Property active_flag() As String
            Get
                Return _Active
            End Get
        End Property

        Public ReadOnly Property CUST_HR_FLD_ID() As Integer
            Get
                Return _CUST_HR_FLD_ID
            End Get
        End Property
    End Class

    Protected Function GetOrders() As IList(Of Order)
        Dim Item As IList(Of Order) = New List(Of Order)()
        Try
            con.Open()
            Dim cmdtxt As String = " SELECT " & _
                                                           "  cust_hr_fld_id  " & _
                                                           ", cust_hr_fld_type " & _
                                                           ", display_order  " & _
                                                           ", cust_hr_fld_name " & _
                                                           ", DECODE(active_flag,'Y', 'True', 'False')active_flag    " & _
                                        " FROM " & _
                                                           " CLIENT_CUSTOM_HR_FIELDS_VIEW" & _
                                        " WHERE " & _
                                                            " grp_id= " & Session("grp_id")

            cmd = con.CreateCommand
            cmd.CommandText = cmdtxt
            CustDT.Load(cmd.ExecuteReader, Data.LoadOption.OverwriteChanges)
            Dim l_cust_hr_fld_id, l_cust_hr_fld_type, l_display_order, l_cust_hr_fld_name, l_active_flag As String
            For count = 0 To CustDT.Rows.Count - 1
                l_cust_hr_fld_id = CustDT.Rows(count)("cust_hr_fld_id").ToString
                l_cust_hr_fld_type = CustDT.Rows(count)("cust_hr_fld_type").ToString
                l_display_order = CustDT.Rows(count)("display_order").ToString
                l_cust_hr_fld_name = CustDT.Rows(count)("cust_hr_fld_name").ToString
                l_active_flag = CustDT.Rows(count)("active_flag").ToString
                Item.Add(New Order(l_cust_hr_fld_id, l_cust_hr_fld_type, l_display_order, l_cust_hr_fld_name, l_active_flag))
            Next
        Catch ex As Exception
            lblErrCustomFields.Text = "Error in Custom HR Fields. Please contact Administrator"
        Finally
            cmd.Dispose()
            con.Close()
        End Try
        Return Item
    End Function


I am using using same as telerik sample code. but it is not working.

I have attached image. please check

Please check and let me. it is very urgent.

Thanks,
Dhamu.

No answers yet. Maybe you can help?

Tags
Grid
Asked by
Dhamodharan
Top achievements
Rank 1
Share this question
or