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

Grid Like excel

1 Answer 105 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Mike_T
Top achievements
Rank 1
Mike_T asked on 22 Apr 2011, 01:00 PM
Hi guys,

I have a page that displays a tree on the left and a grid on the right, the user is able to drag items from the tree and drop them into the grid.

I'm trying to implement the excel like grid functionality but it's not working
Can you please give any recommendation?
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Orders.aspx.vb" MasterPageFile="~/MasterPages/Backend.Master"
    Inherits="RestWeb.Orders" %>
  
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="Telerik" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" ID="content1" runat="server">
    <Telerik:RadScriptBlock runat="Server" ID="RadScriptBlock1">
  
        <script type="text/javascript">
            function OnClientClose_EDITOR(radWindow) {
                refreshGrid(args);
  
            }
            function refreshGrid(arg) {
                if (!arg) {
                    $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("Rebind");
                }
                else {
                    $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindAndNavigate");
                }
            }
  
  
  
  
  
            /* <![CDATA[ */
            var gridId = "<%= orders.ClientID %>";
  
            //Handles the OnNodeDropping event of RadTreeView.
            function onNodeDropping(sender, args) {
                var dest = args.get_destNode();
  
                if (dest) {
                    //Handle dropping on a Node if required.
                }
                else {
                    dropOnHtmlElement(args);
                }
            }
  
            //Handles the case when a Node is dropped onto an HTML element.
            function dropOnHtmlElement(args) {
                if (droppedOnGrid(args))
                    return;
            }
  
            //Checks whether a Node is being dropped onto the RadGrid with ID: 'gridId'.
            //If not, the OnClientDropping event is canceled. 
            function droppedOnGrid(args) {
                var target = args.get_htmlElement();
  
                while (target) {
                    if (target.id == gridId) {
                        args.set_htmlElement(target);
  
                        return;
                    }
  
                    target = target.parentNode;
                }
  
                args.set_cancel(true);
            }
            /* ]]> */
        </script>
  
    </Telerik:RadScriptBlock>
    <Telerik:RadScriptBlock runat="server" ID="RadScriptBlock2">
  
        <script type="text/javascript">
            /* <![CDATA[ */
            var currentDraggedRow = null;
            var dataSetIndex = null;
            var visualClue = null;
            var currentNode = null;
  
            function onNodeMouseOver(sender, args) {
                //gets the node upon mousing over the node
                currentNode = args.get_node();
            }
  
            function onNodeMouseOut(sender, args) {
                //resets the currentNode value upon mousing out
                currentNode = null;
            }
  
            function onRowMouseOver(sender, args) {
                //gets the grid to be draggaed from
                grid = sender;
            }
  
            function onMouseDown(e, element, dataIndex) {
                //Store the currently dragged row (TR)
                currentDraggedRow = element;
                //Store the data key value of the dragged data grid row
                dataSetIndex = dataIndex;
  
                //Attach events to support rendering the visual clue
                $addHandler(document, "mousemove", mouseMove);
                $addHandler(document, "mouseup", mouseUp);
  
                //Prevent selection of text while dragging
  
                //Internet Explorer
                $addHandler(document, "selectstart", preventSelect);
  
                //Other browsers
                if (e.preventDefault)
                    e.preventDefault();
            }
  
            function preventSelect(e) {
                e.preventDefault();
            }
  
            function createVisualClue() {
                var div = document.createElement("div");
                div.style.position = "absolute";
                div.className = $get("<%= orders.ClientID %>").className;
                div.innerHTML = String.format("<table class='{0}'><tr>{1}</tr></table>",
                        $get("<%= orders.MasterTableView.ClientID %>").className,
                    currentDraggedRow.innerHTML);
  
                return div;
            }
  
            function mouseMove(e) {
                if (!visualClue) {
                    visualClue = createVisualClue();
                    document.body.insertBefore(visualClue, document.body.firstChild);
                }
  
                visualClue.style.left = e.clientX + 10 + "px";
                visualClue.style.top = e.clientY + 10 + "px";
            }
  
            function mouseUp(e) {
                if (visualClue) {
                    //Remove the visual clue
                    visualClue.parentNode.removeChild(visualClue);
                    visualClue = null;
                }
                //Detach the events supporting the visual clue
                $removeHandler(document, "mousemove", mouseMove);
                $removeHandler(document, "mouseup", mouseUp);
  
                //Detach the event preventing selection in Internet Explorer
                $removeHandler(document, "selectstart", preventSelect);
  
                if (currentNode && currentDraggedRow) {
                    //Store the value of the node on which the mouse is over
                    $get("<%=TreeNodeText.ClientID%>").value = currentNode.get_text();
  
                    //Store the data key value of the dragged data grid row
                    $get("<%= DataSetIndex.ClientID %>").value = dataSetIndex;
  
  
                    //Initiate AJAX request to update the page                              
                    var ajaxManager = $find("<%= RadAjaxManager1.ClientID %>");
                    ajaxManager.ajaxRequest();
                }
            }
            /* ]]> */
        </script>
  
    </Telerik:RadScriptBlock>
    <asp:HiddenField runat="server" ID="DataSetIndex" />
    <asp:HiddenField runat="server" ID="TreeNodeText" />
    <asp:HiddenField ID="HiddenTableID" runat="server" />
    <asp:HiddenField ID="HiddenBarID" runat="server" />
    <Telerik:RadCodeBlock ID="RadCodeBlock2" runat="server">
  
        <script type="text/javascript">
            function CloseWnd() {
                GetRadWindow().close();
            }
            function GetRadWindow() {
                var oWindow = null;
                if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
                else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz az well)      
                return oWindow;
            }
        </script>
  
    </Telerik:RadCodeBlock>
    <Telerik:RadAjaxManager runat="server" ID="RadAjaxManager1" DefaultLoadingPanelID="RadAjaxLoadingPanel2">
        <AjaxSettings>
            <Telerik:AjaxSetting AjaxControlID="tblGrid">
                <UpdatedControls>
                    <Telerik:AjaxUpdatedControl ControlID="orders" LoadingPanelID="RadAjaxLoadingPanel2" />
                </UpdatedControls>
            </Telerik:AjaxSetting>
        </AjaxSettings>
        <AjaxSettings>
            <Telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                <UpdatedControls>
                    <Telerik:AjaxUpdatedControl ControlID="orders" LoadingPanelID="RadAjaxLoadingPanel2" />
                </UpdatedControls>
            </Telerik:AjaxSetting>
        </AjaxSettings>
    </Telerik:RadAjaxManager>
    <Telerik:RadAjaxLoadingPanel runat="server" ID="RadAjaxLoadingPanel2" />
    <div id="tbldiv" runat="server" style="height: 100%">
        <Telerik:RadWindowManager ID="RadWindowManager2" runat="server" Visible="true" Behavior="Maximize,Close"
            Modal="true">
            <Windows>
                <Telerik:RadWindow Width="400" Height="250" VisibleStatusbar="false" ID="RadWindow1"
                    runat="server" VisibleOnPageLoad="false" />
            </Windows>
        </Telerik:RadWindowManager>
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td height="20" valign="top">
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td width="20" valign="top">
                                <img name="n2_1_1" src="../images/internalpanel/2_1_1.jpg" width="20" height="20"
                                    border="0" id="n2_1_1" alt="" />
                            </td>
                            <td valign="top" background="../images/internalpanel/2_1_bgd.jpg">
                                <div id="headtile" class="title">
                                    <asp:Label ID="Headtxt" runat="server" Text=""></asp:Label></div>
                            </td>
                            <td width="20" valign="top">
                                <img name="n2_1_2" src="../images/internalpanel/2_1_2.jpg" width="20" height="20"
                                    border="0" id="n2_1_2" alt="" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <table border="0" cellpadding="0" cellspacing="0" class="tablePreview">
                        <tr>
                            <td width="20" valign="top" background="../images/internalpanel/2_left_bgd.jpg">
                                <img name="n2_left_bgd" src="../images/internalpanel/2_left_bgd.jpg" width="20" height="12"
                                    border="0" id="n2_left_bgd" alt="" />
                            </td>
                            <td height="50" valign="top">
                                <table border="0" cellpadding="3" cellspacing="0" style="width: 100%">
                                    <tr>
                                        <td class="title">
                                            Menu Items
                                            <Telerik:RadTreeView ID="RadTreeView1" runat="server" Height="300" Width="250" OnClientMouseOver="onNodeMouseOver"
                                                OnClientMouseOut="onNodeMouseOut" OnClientNodeDropping="onNodeDropping" EnableDragAndDrop="True"
                                                LoadingStatusPosition="BeforeNodeText" OnNodeDrop="RadTreeView1_NodeDrop">
                                            </Telerik:RadTreeView>
                                        </td>
                                        <td class="title">
                                            Orders
                                            <div id="tblGrid" runat="server">
                                                <Telerik:RadGrid ID="orders" AllowSorting="true" runat="server" Width="350px" OnNeedDataSource="orders_NeedDataSource"
                                                    OnItemCreated="orders_ItemCreated" Height="320px" AutoGenerateColumns="False" AllowMultiRowEdit="True">
  
                                                    <MasterTableView CommandItemDisplay="None" Width="100%" TableLayout="Fixed" EditMode="InPlace">
  
                                                        <Columns>
                                                        </Columns>
                                                    </MasterTableView>
                                                    <ClientSettings>
                                                        <ClientEvents OnRowMouseOver="onRowMouseOver" />
                                                        <Selecting EnableDragToSelectRows="false" />
                                                        <Scrolling AllowScroll="true" UseStaticHeaders="true" ScrollHeight="320px" />
                                                    </ClientSettings>
                                                    <ClientSettings EnableRowHoverStyle="true">
                                                        <Selecting AllowRowSelect="true" />
                                                    </ClientSettings>
                                                    <PagerStyle AlwaysVisible="true" Mode="NextPrevAndNumeric"></PagerStyle>
                                                </Telerik:RadGrid>
                                            </div>
                                        </td>
                                        <td valign="top">
                                            <table>
                                                <tr>
                                                    <td class="title">
                                                        Notes<br />
                                                        <Telerik:RadTextBox ID="txtNotes" MaxLength="250" Rows="10" Columns="30" TextMode="MultiLine"
                                                            runat="server">
                                                        </Telerik:RadTextBox>
                                                        <br />
                                                        <br />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td class="title" align="right">
                                                        Discount (in %): 
                                                        <Telerik:RadNumericTextBox ID="txtDiscount" Width="100" runat="server" /><br />
                                                        <asp:Button ID="btnDC" CommandName="Submit" runat="server" Text="Discount" />
                                                        <br />
                                                        <br />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td class="title" align="right">
                                                        Original Amount: 
                                                        <Telerik:RadNumericTextBox ID="txtortotal" ReadOnly="true" Width="100" runat="server" />
                                                        <br />
                                                        <br />
                                                        Total Amount: 
                                                        <Telerik:RadNumericTextBox ID="txtTotal" ReadOnly="true" Width="100" runat="server" />
                                                    </td>
                                                </tr>
                                            </table>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                        </td>
                                        <td>
                                               
                                        </td>
                                    </tr>
                                </table>
                            </td>
                            <td width="20" valign="top" background="../images/internalpanel/2_right_bgd.jpg">
                                <img name="n2_right_bgd" src="../images/internalpanel/2_right_bgd.jpg" width="20"
                                    height="12" border="0" id="n2_right_bgd" alt="" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td height="20" valign="top">
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td width="20" valign="top">
                                <img name="n2_2_1" src="../images/internalpanel/2_2_1.jpg" width="20" height="20"
                                    border="0" id="n2_2_1" alt="" />
                            </td>
                            <td valign="top" background="../images/internalpanel/2_2_bgd.jpg">
                                   
                            </td>
                            <td width="20" valign="top">
                                <img name="n2_2_2" src="../images/internalpanel/2_2_2.jpg" width="20" height="20"
                                    border="0" id="n2_2_2" alt="" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
        <table align="center" border="0" cellpadding="3" cellspacing="0" width="100%">
            <tr valign="middle">
                <td style="text-align: center">
                    <asp:HyperLink ID="printbill" runat="server">
                        <asp:ImageButton ID="Bill" CommandName="Bill" CausesValidation="true" ToolTip="Bill"
                            runat="server" ImageUrl="~/images/button_Bill.jpg" /></asp:HyperLink>
                    <asp:ImageButton ID="SaveButton" CommandName="Close" CausesValidation="true" ToolTip="Close Window"
                        runat="server" ImageUrl="~/images/button_ok.jpg" />
                    <asp:HyperLink ID="printorder" runat="server">
                        <asp:ImageButton ID="SendOrder" CommandName="Send" CausesValidation="true" ToolTip="Send Order"
                            runat="server" ImageUrl="~/images/button_send.jpg" /></asp:HyperLink>
                    <asp:ImageButton ID="Remove" CommandName="Remove" CausesValidation="true" ToolTip="Remove Order"
                        runat="server" ImageUrl="~/images/button_remove.jpg" />
                    <asp:ImageButton ID="Refresh" CommandName="Refresh" CausesValidation="true" ToolTip="Refresh Order"
                        Visible="false" runat="server" ImageUrl="~/images/button_refresh.jpg" />
                </td>
            </tr>
        </table>
    </div>
    <Telerik:RadInputManager ID="RadInputManager1" runat="server">
        <Telerik:NumericTextBoxSetting BehaviorID="NumericBehavior3" Type="Number" DecimalDigits="0">
            <TargetControls>
                <Telerik:TargetInput ControlID="txtTotal" />
            </TargetControls>
        </Telerik:NumericTextBoxSetting>
    </Telerik:RadInputManager>
</asp:Content>
<asp:Content ID="Content2" runat="server" ContentPlaceHolderID="head">
</asp:Content>

and the code behind is the following:

Imports System
Imports System.Data
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports Telerik.Web.UI
Partial Public Class Orders
    Inherits System.Web.UI.Page
  
    Protected Sub Orders_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Dim sTableID = Request.QueryString("TableID")
        Dim sBarID = Request.QueryString("BarID")
        txtDiscount.Value = 0
        txtortotal.Value = 0
  
        If Session("UserTypeID") = 4 Then
            Refresh.Visible = False
            Remove.Visible = False
        Else
            'txtDiscount.MaxValue = 100
        End If
  
        If sTableID Is Nothing Then
            If sBarID Is Nothing Then
                ScriptManager.RegisterStartupScript(Me, [GetType](), "closeWnd", "CloseWnd();", True)
            Else
                ViewState("Bar") = True
                HiddenBarID.Value = sBarID
                HiddenTableID.Value = 0
                Headtxt.Text = "BAR Number: " & sBarID
            End If
        Else
            ViewState("Table") = True
            HiddenBarID.Value = 0
            HiddenTableID.Value = sTableID
            Headtxt.Text = "TABLE Number: " & sTableID
            'get table name if exist
            Dim db As New RestData.RestDataContext()
            Dim sTableData = (From p In db.Tables _
                         Where p.number = sTableID _
                         And p.Type = "T" _
                             Select p).SingleOrDefault
  
            If sTableData IsNot Nothing Then
                Dim sTableName = sTableData.Owner
                Headtxt.Text = Headtxt.Text + "    -    " + "TABLE OWNER: " + sTableName
            End If
        End If
    End Sub
    Protected Sub SaveButton_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles SaveButton.Click
  
        ScriptManager.RegisterStartupScript(Me, [GetType](), "closeWnd", "CloseWnd();", True)
    End Sub
    Friend Class SiteDataItem
        Private _text As String
        Private _id As Integer
        Private _parentId As Integer
        Public Property Text() As String
            Get
                Return _text
            End Get
            Set(ByVal value As String)
                _text = value
            End Set
        End Property
        Public Property ID() As Integer
            Get
                Return _id
            End Get
            Set(ByVal value As Integer)
                _id = value
            End Set
        End Property
        Public Property ParentID() As Integer
            Get
                Return _parentId
            End Get
            Set(ByVal value As Integer)
                _parentId = value
            End Set
        End Property
        Public Sub New(ByVal id As Integer, ByVal parentId As Integer, ByVal text As String)
            _id = id
            _parentId = parentId
            _text = text
        End Sub
    End Class
    Private Shared Sub BindToIEnumerable(ByVal treeView As RadTreeView)
        Dim siteData As New List(Of SiteDataItem)()
        Dim db As New RestData.RestDataContext
        Dim dd = db.usp_rr_admin_pu_Categories()
  
        For Each Category In dd
            Dim sCategoryID As Integer = Category.CategoryID
            Dim sCategory As String = Category.Category
            siteData.Add(New SiteDataItem(sCategoryID, 0, sCategory))
        Next
        Dim dd1 = db.usp_rr_admin_pu_Items()
        For Each Item In dd1
            Dim sItemID As Integer = Item.ItemID
            Dim sItemName As String = Item.ItemName
            Dim sParentID As Integer = Item.CategoryID
            siteData.Add(New SiteDataItem(sItemID, sParentID, sItemName))
        Next
         
        treeView.DataTextField = "Text"
        treeView.DataFieldID = "ID"
        treeView.DataFieldParentID = "ParentID"
        treeView.DataSource = siteData
        treeView.DataBind()
  
    End Sub
    Private ReadOnly Property DataSource() As DataTable
        Get
            Dim data As DataTable = DirectCast(Session("DataSource"), DataTable)
            txtTotal.Value = 0
            data = New DataTable()
            data.Columns.Add("Item Name")
            data.Columns.Add("Unit Price")
  
            Dim db As New RestData.RestDataContext
            Dim dd = db.usp_rr_admin_pu_Orders(HiddenBarID.Value, HiddenTableID.Value)
            For Each item In dd
  
                Dim sItemName As String = item.ItemName
                Dim sUnitPrice As Integer = item.UnitPrice
                Dim sReference As String = item.referenceID
                data.Rows.Add(New Object() {sItemName, sUnitPrice})
  
                If sReference Is Nothing Then
                    Dim number As String = Format("(0: D9)", (DateTime.Now.Ticks / 10) Mod 1000000000)
                    Session("Reference") = number
                Else
                    Session("Reference") = sReference
                End If
            Next
  
            Session("DataSource") = data
            Return data
        End Get
    End Property
    Protected Overloads Overrides Sub OnLoad(ByVal e As EventArgs)
        If Not Page.IsPostBack Then
            BindToIEnumerable(RadTreeView1)
            'RadTreeView1.ExpandAllNodes()
        End If
        MyBase.OnLoad(e)
    End Sub
    Protected Sub orders_ItemCreated(ByVal sender As Object, ByVal e As GridItemEventArgs)
        If TypeOf e.Item Is GridDataItem Then
            Dim dataItem As GridDataItem = TryCast(e.Item, GridDataItem)
            'Registers the onmousedown event to be fired upon selecting a grid's row and passes arguments to the event handler
            e.Item.Attributes("onmousedown") = String.Format("onMouseDown(event, this,{0})", dataItem.DataSetIndex)
            e.Item.Style("cursor") = "move"
        End If
    End Sub
    Protected Sub RadAjaxManager1_AjaxRequest(ByVal sender As Object, ByVal e As AjaxRequestEventArgs)
        'This ajax request is fired upon dropping a grid's row onto a TreeNode
  
        'Finds the node, onto which the grid's row should be dropped, by text using the previously stored value of the "TreeNodeText" hidden field
        Dim destinationNode As RadTreeNode = RadTreeView1.FindNodeByText(TreeNodeText.Value)
        Dim sourceRow As DataRow = DataSource.Rows(Convert.ToInt32(DataSetIndex.Value))
  
        'Creates a new node using the respective grid's row information. The text of the TreeNode is set to be the value of the needed cell in the grid's datasource
        Dim sourceNode As New RadTreeNode(DirectCast(sourceRow("Column1"), String), DirectCast(sourceRow("Column2"), String))
  
        destinationNode.Nodes.Add(sourceNode)
        destinationNode.Expanded = True
  
        'Removes the row that has been dropped onto the treeview
        'DataSource.Rows.Remove(sourceRow)
  
        'Rebinds the grid to address the changes made to its datasource
        orders.Rebind()
  
        If e.Argument = "Rebind" Then
            orders.MasterTableView.SortExpressions.Clear()
            orders.MasterTableView.GroupByExpressions.Clear()
            orders.Rebind()
  
        ElseIf e.Argument = "RebindAndNavigate" Then
            orders.MasterTableView.SortExpressions.Clear()
            orders.MasterTableView.GroupByExpressions.Clear()
            orders.MasterTableView.CurrentPageIndex = orders.MasterTableView.PageCount - 1
            orders.Rebind()
  
        End If
  
  
    End Sub
    Protected Sub orders_NeedDataSource(ByVal source As Object, ByVal e As GridNeedDataSourceEventArgs)
        orders.DataSource = DataSource
        GetTotal()
    End Sub
    Protected Sub RadTreeView1_NodeDrop(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadTreeNodeDragDropEventArgs)
        'Handle when dropped on another Node.
        If e.SourceDragNode.Level <> 0 Then
            If e.DestDragNode IsNot Nothing Then
                'If e.SourceDragNode.Level <> "0" Then
            ElseIf e.HtmlElementID = orders.ClientID Then
                Dim dt As DataTable = DirectCast(Session("DataSource"), DataTable)
                For Each node As RadTreeNode In e.DraggedNodes
                    AddRowToGrid(dt, node)
                    'AddRowsToGrid(dt, node.Nodes)
                    'node.Remove()
                Next
            End If
            'End If
        End If
    End Sub
    Private Sub AddRowsToGrid(ByVal dt As DataTable, ByVal nodes As RadTreeNodeCollection)
        For Each node As RadTreeNode In nodes
            AddRowToGrid(dt, node)
            'AddRowsToGrid(dt, node.Nodes)
        Next
    End Sub
    Private Sub AddRowToGrid(ByVal dt As DataTable, ByVal node As RadTreeNode)
        Dim sText = node.Text
        Dim sItemID = node.Value
        Dim sUnitPrice = 0
        Dim sOrderID = 0
        Dim sBarID = HiddenBarID.Value
        Dim sTableID = HiddenTableID.Value
        Dim sNotes = txtNotes.Text
        Dim sOrderDate = Now
  
        Dim db As New RestData.RestDataContext()
        Dim sItemData = (From p In db.Items _
                     Where p.ItemName = sText _
                         Select p).Single
        If Not sItemData Is Nothing Then
            sText = sItemData.ItemName
            sItemID = sItemData.ItemID
            sUnitPrice = sItemData.UnitPrice
        End If
        db.Dispose()
  
        Dim values As String() = {sText, sUnitPrice, 0, sItemID}
        ' insert the new Order in the orders table
        Dim db2 As New RestData.RestDataContext()
        Dim p1 As New RestData.Order
        p1.ItemID = sItemID
        p1.BarID = sBarID
        p1.Notes = sNotes
        p1.OrderDate = Now
        p1.TableID = sTableID
  
        'db1.Orders.InsertOnSubmit(p1)
        db2.ExecuteCommand("INSERT INTO Orders (ItemID,TableID,BarID,OrderDate,Status,Notes,UserID) values ({0},{1},{2},{3},{4},{5},{6})", sItemID, sTableID, sBarID, sOrderDate, 1, sNotes, Session("UserID"))
        db2.SubmitChanges()
        db2.Dispose()
        db2 = Nothing
  
        'get last orderid
        Dim maxdb As New RestData.RestDataContext
        Dim maxorder = maxdb.usp_rr_admin_pu_GetMaxOrder()
        Dim maxOrderID = maxorder.Single.LastOrderID.Value
  
        'get reference number if exist for that table or bar, 
        'if not not we generate a new one
        Dim refdb As New RestData.RestDataContext
        Dim ref = refdb.usp_rr_admin_pu_Reference(HiddenBarID.Value, HiddenTableID.Value)
        For Each Order In ref
            If String.IsNullOrEmpty(Order.referenceID) Then
                Dim number As String = Format("(0: D9)", (DateTime.Now.Ticks / 10) Mod 1000000000)
                Session("Reference") = number
            Else
                Dim sReference As String = Order.referenceID
                Session("Reference") = sReference
            End If
        Next
  
        'update the last record with the reference number
        Dim db3 As New RestData.RestDataContext()
        Dim slastOrder = (From p In db3.Orders _
                     Where p.OrderID = maxOrderID _
                         Select p).Single
        slastOrder.ReferenceID = Session("Reference")
        db3.SubmitChanges()
        db3.Dispose()
        db3 = Nothing
  
        txtNotes.Text = ""
        orders.Rebind()
        GetTotal()
    End Sub
    Protected Sub Remove_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles Remove.Click
        Dim sTableID = HiddenTableID.Value
        Dim sBarID = HiddenBarID.Value
        If sBarID <> 0 Then
            Dim sID = sBarID
            RadWindowManager2.Windows(0).NavigateUrl = "Remove.aspx?BarID=" & sID
        Else
            Dim sID = sTableID
            RadWindowManager2.Windows(0).NavigateUrl = "Remove.aspx?TableID=" & sID
        End If
  
        RadWindowManager2.Windows(0).VisibleOnPageLoad = True
        RadWindowManager2.Modal = True
        RadWindowManager2.Width = 850
        RadWindowManager2.Height = 550
        RadWindowManager2.Windows(0).Width = 850
        RadWindowManager2.Windows(0).Height = 550
        RadWindowManager2.KeepInScreenBounds = True
    End Sub
    Private Sub Orders_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        RadWindowManager2.Windows(0).VisibleOnPageLoad = False
        Dim sTableID = HiddenTableID.Value
        Dim sBarID = HiddenBarID.Value
        Dim sPath = ""
        Dim sPath1 = ""
  
        If sTableID IsNot Nothing And sTableID <> "0" Then
            Dim url = "Bill.aspx?TableID=" & sTableID & " &Discount=" & txtDiscount.Value & ""
            Dim url1 = "SendOrder.aspx?TableID=" & sTableID & " &Discount=" & txtDiscount.Value & ""
            sPath = url
            sPath1 = url1
        Else
            Dim url = "Bill.aspx?BarID=" & sBarID & " &Discount=" & txtDiscount.Value & ""
            Dim url1 = "SendOrder.aspx?BarID=" & sBarID & " &Discount=" & txtDiscount.Value & ""
            sPath = url
            sPath1 = url1
        End If
        OpenPopUp(printbill, sPath, "", 400, 550)
        OpenPopUp(printorder, sPath1, "", 400, 550)
  
        If Session("UserTypeID") = 4 Then
            txtDiscount.MaxValue = 10
        End If
        If Session("UserTypeID") = 1 Or Session("UserTypeID") = 2 Then
            txtDiscount.MaxValue = 100
        End If
        If Session("UserTypeID") = 3 Then
            txtDiscount.MaxValue = 37.5
        End If
    End Sub
    Public Shared Sub OpenPopUp(ByVal opener As System.Web.UI.WebControls.WebControl, ByVal PagePath As String, ByVal windowName As String, ByVal width As Integer, ByVal height As Integer)
        Dim clientScript As String
        Dim windowAttribs As String
        Dim tscroll = "Yes"
        windowAttribs = "width=" & width & "px," & _
                        "height=" & height & "px," & _
                        "ScrollBars=" & tscroll & "," & _
                        "left='+((screen.width -" & width & ") / 2)+'," & _
                        "top='+ (screen.height - " & height & ") / 2+'"
        clientScript = "window.open('" & PagePath & "','" & windowName & "','" & windowAttribs & "');return false;"
        opener.Attributes.Add("onClick", clientScript)
    End Sub
    Private Sub Refresh_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles Refresh.Click
        orders.Rebind()
        GetTotal()
    End Sub
    Private Sub GetTotal()
        txtortotal.Value = 0
        Dim db As New RestData.RestDataContext
        Dim dd = db.usp_rr_admin_pu_Orders(HiddenBarID.Value, HiddenTableID.Value)
        For Each item In dd
            Dim sUnitPrice As Integer = item.UnitPrice
            txtortotal.Value = txtortotal.Value + sUnitPrice
        Next
        txtTotal.Value = txtortotal.Value - (txtortotal.Value * txtDiscount.Value / 100)
    End Sub
    Protected Sub btnDC_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDC.Click
        'txtTotal.Value = txtortotal.Value - txtDiscount.Value
        txtTotal.Value = txtortotal.Value - (txtortotal.Value * txtDiscount.Value / 100)
    End Sub
      
  
    Private Sub Orders_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles orders.PreRender
        If Not IsPostBack Then
            For Each item As GridItem In orders.MasterTableView.Items
                If TypeOf item Is GridEditableItem Then
                    Dim editableItem As GridEditableItem = CType(item, GridDataItem)
                    editableItem.Edit = True
                End If
            Next
            orders.Rebind()
        End If
    End Sub
End Class

1 Answer, 1 is accepted

Sort by
0
Radoslav
Telerik team
answered on 28 Apr 2011, 08:16 AM
Hello Mike,

Please check out the following code library which demonstrates an Excel-like RadGrid and let me know if it helps you:
http://www.telerik.com/community/code-library/aspnet-ajax/grid/excel-like-radgrid.aspx

All the best,
Radoslav
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Tags
Grid
Asked by
Mike_T
Top achievements
Rank 1
Answers by
Radoslav
Telerik team
Share this question
or