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?
and the code behind is the following:
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 SubEnd Class