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

Detail table paging issues

7 Answers 175 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Milind
Top achievements
Rank 1
Milind asked on 09 Oct 2015, 07:29 AM

Hello,

 I have master and detail table, both having custom paging option set to true and viewstate for page as well as grid is set to false.

The problems are -

     1. If I expand row to see the details then it do not collaps. If I expand another row then the row expanded earlier row will collaps. The same row can not be collapsed once expanded.

     2. I am binding sales order data using a stored proc. The stored proc extracts no of orders set as per the page size i.e if page size is 10 the proc returns only 10 orders from the table. If page size is 15 then only 15 ​orders are returned. So If I select page 2 and my page size is 15 then order no 16 to 30 would be extracted from the table and returned by the stored proc. This behaviour works great for main grid table where order header info is displayed. (I have more than 2000K ​orders in the order master.) But if I try to use the same technique for detail table it fails. E.g. - Order no 2 has 500 items into it. I want to display 50 items per page of detail table. The initial display is correct i.e the detail table displays 50 items on page 1 and shows count of 10 pages. Then if I click on the page 2 of detail table, rather than showing items from 51 to 100 entire grid (main grid) is rebound. So I am not able to jump on page 2 of any order detail.

Pls help...

Following is the code-

aspx -

<%@ Page Title="Sales Order" Language="C#" enableViewState="false" ViewStateMode="Disabled" MasterPageFile="~/Erp.Master" AutoEventWireup="true" CodeBehind="SalesOrderEntry.aspx.cs" Inherits="ErpWebApplication.TransactionData.SalesOrderEntry" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadGridSalesOrder">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadGridSalesOrder" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManagerProxy>
    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    <%--<Services>
    <asp:ServiceReference Path="~/Services/FetchData.svc" />
    </Services>--%>
    </asp:ScriptManagerProxy>
    <br />
    
    <div id="DivMessage" runat="server"  >
        <asp:Label ID="LblMessage" runat="server" Text=""></asp:Label>
    </div>
    <div class="clearfix"></div>
    <%--<br />--%>
    <fieldset class="border-inset">
        <legend class="caption-for-selected-page-header">&nbsp;Sales Order&nbsp;</legend>
    <div id="DivDataDisplayInGrid" runat="server"  class="col-md-16" style="background-color:transparent;">
        <div id="DivButtonTop" class="col-md-16" runat="server">
            <fieldset class="border-for-div text-align-Left">
                <legend class="caption-for-div">&nbsp;Action&nbsp;</legend>
                <telerik:RadButton ID="btnAddTop" runat="server" Text="Add" RenderMode="Auto" ToolTip="Add SO" OnClick="btnAddTop_Click" CausesValidation="False">
                    <Icon PrimaryIconCssClass="rbAdd" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                </telerik:RadButton>
                <telerik:RadButton ID="btnEditTop" runat="server" Text="Edit" RenderMode="Auto" ToolTip="Edit SO" OnClick="btnEditTop_Click" CausesValidation="False" >
                    <Icon PrimaryIconCssClass="rbEdit" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                </telerik:RadButton>
                <telerik:RadButton ID="btnSaveTop" runat="server" Text="Save" RenderMode="Auto" ToolTip="Save/Update SO" OnClick="btnSaveTop_Click" OnClientClicking="SaveConfirm">
                    <Icon PrimaryIconCssClass="rbSave" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                </telerik:RadButton>
                <telerik:RadButton ID="btnAbortTop" runat="server" Text="Abort" RenderMode="Auto" ToolTip="Abort" OnClick="btnAbortTop_Click" OnClientClicking="SaveConfirm" CausesValidation="False">
                    <Icon PrimaryIconCssClass="rbCancel" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                </telerik:RadButton>
                <telerik:RadButton ID="btnRefreshTop" runat="server" Text="Refresh" RenderMode="Auto" ToolTip="Refresh" OnClick="btnRefreshTop_Click" CausesValidation="False">
                    <Icon PrimaryIconCssClass="rbRefresh" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                </telerik:RadButton>
            </fieldset>
        </div>
        <div class="clearfix"></div>
        <br />
        <div id="DivGrid" class="col-md-16" runat="server">
            <fieldset class="border-for-div">
                <legend class="caption-for-div">&nbsp;Sales Order List&nbsp;</legend>
                <%--                <telerik:RadSearchBox ID="SearchRegionName" EmptyMessage="Search Region" Width="100%" runat="server" DataContextKeyField="RegionName" TabIndex="1" OnSearch="SearchRegionName_Search" EnableAutoComplete="true" >
                <WebServiceSettings Path="SalesOrder.aspx" Method="GetSearchBoxResults" />
                </telerik:RadSearchBox>--%>

                <telerik:RadGrid ID="RadGridSalesOrder" runat="server" EnableHeaderContextMenu="true" AllowFilteringByColumn="True" AutoPostBackOnFilter="true" EnableViewState="false"
                                 AllowPaging="True" EnableLinqExpressions="false" AllowCustomPaging="true" AllowSorting="True" AutoGenerateColumns="False" RenderMode="Auto"
                                 GroupPanelPosition="Top" ShowGroupPanel="false"
                                 OnNeedDataSource="RadGridSalesOrder_NeedDataSource"
                                 OnDetailTableDataBind="RadGridSalesOrder_DetailTableDataBind"
                                 OnItemCommand="RadGridSalesOrder_ItemCommand"
                                 OnPageIndexChanged="RadGridSalesOrder_PageIndexChanged"
                                 OnSortCommand="RadGridSalesOrder_SortCommand"
                                 OnPageSizeChanged="RadGridSalesOrder_PageSizeChanged" >
                    <ClientSettings AllowDragToGroup="True" EnableRowHoverStyle="True" >
                        <Scrolling AllowScroll="True" UseStaticHeaders="True"  />
                        <Selecting AllowRowSelect="True"  />
                        <ClientEvents OnRowSelected="OnRowSelected" />
                    <%--<ClientEvents OnCommand="RadGrid1_Command"></ClientEvents>--%>
                    </ClientSettings>
                    <MasterTableView CommandItemDisplay="TopAndBottom" DataKeyNames="SalesOrderId" AllowMultiColumnSorting="true" ClientDataKeyNames="SalesOrderId" Name="MasterTbl" EnableViewState="false" >
                        <CommandItemSettings ShowAddNewRecordButton="false" ShowCancelChangesButton="false" ShowExportToCsvButton ="false" ShowExportToExcelButton ="false" ShowExportToPdfButton ="false"
                                             ShowExportToWordButton ="false" ShowSaveChangesButton ="false" />
                        <SortExpressions>
                            <telerik:GridSortExpression FieldName="SalesOrderId" SortOrder="Descending" />
                        </SortExpressions>
                        <DetailTables>
                            <telerik:GridTableView DataKeyNames="ItemCode" Name="OrderDetail" Width="100%" AllowCustomSorting="false" AllowCustomPaging="true" EnableViewState="false" AllowFilteringByColumn="false" PageSize="10" ShowFooter="true" AllowSorting="false" HierarchyLoadMode="ServerBind" HierarchyDefaultExpanded="true">
                                <SortExpressions>
                                    <telerik:GridSortExpression FieldName="ItemCode" SortOrder="Ascending" />
                                </SortExpressions>
                                <Columns>
                                    <telerik:GridBoundColumn HeaderText="Item Code" DataField="ItemCode" SortExpression="ItemCode" UniqueName="ItemCode" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" >
                                        <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                        <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="Item Name" DataField="ItemName" SortExpression="ItemName" UniqueName="ItemName" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" FooterText ="Total : " >
                                        <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="30%"  />
                                        <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="30%"  />
                                        <FooterStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="30%"  />
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="Qty" DataField="OrderQty" Aggregate="Sum" SortExpression="OrderQty" UniqueName="OrderQty" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" DataFormatString="{0:###0.00}" >
                                        <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                        <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                        <FooterStyle  HorizontalAlign="Right" VerticalAlign="Middle" Width="10%" />  
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="Rate" DataField="Rate" SortExpression="Rate" UniqueName="Rate" Groupable="False" AllowFiltering="false" Visible="false" FilterControlWidth="60%"  DataFormatString="{0:###0.00}">
                                        <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                        <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                    </telerik:GridBoundColumn>
                                    <%--<telerik:GridBoundColumn HeaderText="Amount" DataField="Amount" SortExpression="Amount" UniqueName="Amount" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%"  DataFormatString="{0:###0.00}">
                                        <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                        <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                    </telerik:GridBoundColumn>--%>
                                    <telerik:GridCalculatedColumn HeaderText="Amount" UniqueName="Amount" DataType="System.Double" DataFields="OrderQty, Rate" Expression="{0}*{1}" FooterText="Total : " Aggregate="Sum" DataFormatString="{0:###0.00}">
                                        <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                        <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                        <FooterStyle  HorizontalAlign="Right" VerticalAlign="Middle" Width="10%" />  
                                    </telerik:GridCalculatedColumn>
                                    <telerik:GridTemplateColumn HeaderText="Status" DataField ="IsActive" UniqueName="IsActive" Groupable="false" AllowSorting="false" AllowFiltering="false" Visible="true" >
                                        <ItemTemplate>
                                            <%# Boolean.Parse(Eval("IsActive").ToString()) ? "<font color='#006600'><b> Active</b></font>" : "<font color='#990000'><b>Inactive</b></font>" %>
                                        </ItemTemplate>
                                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                    </telerik:GridTemplateColumn>
                                </Columns>
                                <PagerStyle Mode="NextPrevNumericAndAdvanced"  />
                            </telerik:GridTableView>
                        </DetailTables>
                        <Columns>
                            <%--                            <telerik:GridClientSelectColumn Text="Edit" UniqueName="colRowSelect" Visible="False">
                            </telerik:GridClientSelectColumn>
                            <telerik:GridEditCommandColumn UniqueName="edtColumn" ButtonType="ImageButton">
                            </telerik:GridEditCommandColumn>--%>
                            <telerik:GridBoundColumn HeaderText="SO Id" DataField="SalesOrderId" SortExpression="SalesOrderId" UniqueName="SalesOrderId" Groupable="False" AllowFiltering="True" Visible="True" FilterControlWidth="60%" >
                                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn HeaderText="SO Date" DataField="SalesOrderDate" SortExpression="SalesOrderDate" UniqueName="SalesOrderDate" Groupable="true" AllowFiltering="True" Visible="True" FilterControlWidth="60%" DataFormatString="{0:dd/MM/yyyy}" >
                                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn HeaderText="Party Name" DataField="PartyName" SortExpression="PartyName" UniqueName="PartyName" Groupable="True"  AllowFiltering="True" Visible="True"  FilterControlWidth="90%">
                                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="47%"  />
                                <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="47%"  />
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn HeaderText="Party Ref No" DataField="PartyRefPONo" SortExpression="PartyRefPONo" UniqueName="PartyRefPONo" Groupable="false"  AllowFiltering="True" Visible="True"  FilterControlWidth="70%">
                                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn HeaderText="Party Ref Date" DataField="PartyRefPODate" SortExpression="PartyRefPODate" UniqueName="PartyRefPODate" Groupable="false"  AllowFiltering="True" Visible="True"  FilterControlWidth="70%"  DataFormatString="{0:dd/MM/yyyy}">
                                <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                            </telerik:GridBoundColumn>
                            <telerik:GridTemplateColumn HeaderText="Status" DataField ="IsActive" UniqueName="IsActive" Groupable="false" AllowSorting="false" AllowFiltering="false" Visible="true" >
                                <ItemTemplate>
                                    <%# Boolean.Parse(Eval("IsActive").ToString()) ? "<font color='#006600'><b> Active</b></font>" : "<font color='#990000'><b>Inactive</b></font>" %>
                                </ItemTemplate>
                                <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                            </telerik:GridTemplateColumn>
                        <%--<telerik:GridButtonColumn CommandName="Delete" Text="Deactivate" UniqueName="column" ButtonType="ImageButton" ConfirmText="Are you Sure ?" ConfirmTitle="Confirm" ShowSortIcon="False">
                        </telerik:GridButtonColumn>--%>
                        </Columns>
                        <CommandItemStyle HorizontalAlign="Left" />
                    </MasterTableView>
                    <PagerStyle Mode="NextPrevNumericAndAdvanced"  />
                    <FilterMenu CssClass="cssForFilterButton">
                    </FilterMenu>
                    <CommandItemStyle HorizontalAlign="Left" />
                    <FilterItemStyle HorizontalAlign="Left" />
                    <GroupingSettings ShowUnGroupButton = "false" />
                </telerik:RadGrid>

            </fieldset>
        </div>
        <div class="clearfix"></div>
        <div id="DivDataForm" class="col-md-16" style="background-color:transparent;" runat="server">
            <div id="DivRegionName" class="col-md-16">
                <fieldset class="border-for-div">
                    <legend class="caption-for-div">Sales Order</legend>
                    <asp:HiddenField ID="hdnSalesOrderId" runat="server" Value="0" />
                    <asp:HiddenField ID="hdnVisibleDiv" runat="server" Value="DivGrid" />
                    <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Region Name :</label>
                    <asp:TextBox ID="TxtRegionName" runat="server" Width="100%" TabIndex="2" CausesValidation="True" placeholder="Enter Region Name">
                    </asp:TextBox>
                    <asp:RequiredFieldValidator ID="ReqRegion" runat="server" ErrorMessage="Region Name can not be blank" ControlToValidate="TxtRegionName" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                </fieldset>
            </div>
            <div class="clearfix"></div>
            <br />
            <div class="col-md-16">
                <fieldset class="border-for-div">
                    <legend class="caption-for-div">Status</legend>
                    <asp:Radiobutton ID="RbActive" runat="server" Text="Active" Checked="true" TabIndex="31" class="label-font-setting-medium"  GroupName="ActiveInactive" />
                    <asp:Radiobutton ID="RbInactive" runat="server" Text="In-Active" TabIndex="32" class="label-font-setting-medium"  GroupName="ActiveInactive" />
                    <%--<asp:Button ID="Button1" runat="server" Text="Save" style="visibility:hidden;"/>--%>
                </fieldset>
            </div>
        </div>
        <div class="clearfix"></div>
            <br />
            <div class="col-md-16">
                <fieldset class="border-for-div text-align-Left">
                    <legend class="caption-for-div">&nbsp;Action&nbsp;</legend>
                    <telerik:RadButton ID="btnAddBottom" runat="server" Text="Add" RenderMode="Lightweight" ToolTip="Add SO" OnClick="btnAddTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbAdd" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnEditBottom" runat="server" Text="Edit" RenderMode="Lightweight" ToolTip="Edit SO"  OnClick="btnEditTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbEdit" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnSaveBottom" runat="server" Text="Save" RenderMode="Lightweight" ToolTip="Save/Update SO" OnClick="btnSaveTop_Click" OnClientClicking="SaveConfirm">
                        <Icon PrimaryIconCssClass="rbSave" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnAbortBottom" runat="server" Text="Abort" RenderMode="Auto" ToolTip="Abort" OnClick="btnAbortTop_Click"  OnClientClicking="SaveConfirm" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbCancel" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnRefreshBottom" runat="server" Text="Refresh" RenderMode="Auto" ToolTip="Refresh" OnClick="btnRefreshTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbRefresh" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                </fieldset>            
            </div>
            <div class="clearfix"></div>
            <br />
        
    </div>
    </fieldset>
    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
        <script type="text/javascript">

            function SaveConfirm(sender, args) {
                args.set_cancel(!window.confirm("Are you sure ?"));
            }

            function OnRowSelected(sender, args) {
                var SoId = args.getDataKeyValue("SalesOrderId");
                var hdnControl = document.getElementById('<%= hdnSalesOrderId.ClientID%>');
                hdnControl.value = SoId;
                //alert(hdnControl.value);
            }
        </script>
    </telerik:RadScriptBlock>
</asp:Content>

C# -

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using MTIPLSQLCommonClass;
using ModelClasses;
using ErpBusinessDataLayer;
using System.Globalization;

namespace ErpWebApplication.TransactionData
{
    public partial class SalesOrderEntry : System.Web.UI.Page
    {

        #region library class instances

        clsSQLCommonLib objFunLib = new clsSQLCommonLib();
        clsRegionMasterBDL objRegionMaster = new clsRegionMasterBDL();

        #endregion

        #region Variable declaration

        int intVirtualRowCount = 0, intVirtualRowCount1 = 0, intVirtualRowCount2 = 0, intDtlTblCurrentPageIndex = 0;
        const int ItemsPerRequest = 10;

        #endregion

        #region static variables for radgrid

        string strSalesOrderId;
        static string strSortOrder = null;
        static string strRadGridFilter = null;
        static int intPageIndex = 1;
        static List<ClsFilterCriteria> objClsFilterCriteria = new List<ClsFilterCriteria>();

        #endregion


        protected void Page_Load(object sender, EventArgs e)
        {
            this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "Global", this.ResolveClientUrl("~/Include/javaFunctionLib.js"));

            System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
            DateTimeFormatInfo dtf = new System.Globalization.DateTimeFormatInfo();
            dtf.ShortDatePattern = "dd/MM/yyyy";
            ci.DateTimeFormat = dtf;
            System.Threading.Thread.CurrentThread.CurrentCulture = ci;

            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            HttpContext.Current.Response.Cache.SetNoServerCaching();
            HttpContext.Current.Response.Cache.SetNoStore();

            Response.AddHeader("Refresh", Convert.ToString((Session.Timeout * 60) + 10) + "; url=" + ResolveServerUrl("~/login/frmLogin.aspx"));

            RadInputManager mpRadInputManager;

            mpRadInputManager = (RadInputManager)Master.FindControl("RadInputManager1");
            if (mpRadInputManager != null)
            {
                DateInputSetting dateTextBoxSetting = (DateInputSetting)mpRadInputManager.GetSettingByBehaviorID("BIDateInput");
                //dateTextBoxSetting.TargetControls.Add(new TargetInput(TxtOrderDate.UniqueID, true));
                TextBoxSetting txtBoxSetting = (TextBoxSetting)mpRadInputManager.GetSettingByBehaviorID("BINotEmpty");
                //txtBoxSetting.TargetControls.Add(new TargetInput(TxtVyasaRefNo.UniqueID, true));
                //txtBoxSetting.TargetControls.Add(new TargetInput(TxtCustomerOrderNo.UniqueID, true));
            }

            if (!IsPostBack)
            {
                strSortOrder = null;
                strRadGridFilter = null;
                intPageIndex = 1;
                objClsFilterCriteria = new List<ClsFilterCriteria>();

                DivDataForm.Attributes["style"] = "Display:None;";
                DivDataDisplayInGrid.Attributes["style"] = "Display:Normal;";
                btnAddTop.Enabled = true;
                btnAddBottom.Enabled = true;
                btnEditTop.Enabled = true;
                btnEditBottom.Enabled = true;
                btnSaveTop.Enabled = false;
                btnSaveBottom.Enabled = false;
                btnAbortTop.Enabled = false;
                btnAbortBottom.Enabled = false;
                btnRefreshTop.Enabled = true;
                btnRefreshBottom.Enabled = true;

                ClsFilterCriteria TempClsFilter;
                TempClsFilter = new ClsFilterCriteria();

                TempClsFilter.ColumnName = "SalesOrderId";
                TempClsFilter.FilterCriteria = null;
                objClsFilterCriteria.Add(TempClsFilter);
                TempClsFilter = new ClsFilterCriteria();
                TempClsFilter.ColumnName = "SalesOrderDate";
                TempClsFilter.FilterCriteria = null;
                objClsFilterCriteria.Add(TempClsFilter);
                TempClsFilter = new ClsFilterCriteria();

                foreach (GridSortExpression exp in RadGridSalesOrder.MasterTableView.SortExpressions)
                {
                    if (strSortOrder == "" | String.IsNullOrEmpty(strSortOrder))
                    {
                        strSortOrder = exp.ToString();
                    }
                    else
                    {
                        strSortOrder = strSortOrder + ", " + exp.ToString();
                    }
                }

                //RadGridSalesOrder.Rebind();
            }
            else
            {
                if (hdnVisibleDiv.Value == "DivDataForm")
                {
                    DivDataForm.Attributes["style"] = "Display:Normal;";
                    DivGrid.Attributes["style"] = "Display:None;";
                    btnRefreshTop.Enabled = false;
                    btnRefreshBottom.Enabled = false;

                }
                else
                {
                    DivDataForm.Attributes["style"] = "Display:None;";
                    DivGrid.Attributes["style"] = "Display:Normal;";
                    btnRefreshTop.Enabled = true;
                    btnRefreshBottom.Enabled = true;

                }
            }
        }


        public static string ResolveServerUrl(string serverUrl, bool forceHttps)
        {
            // *** Is it already an absolute Url?
            if (serverUrl.IndexOf("://") > -1)
                return serverUrl;

            // *** Start by fixing up the Url an Application relative Url
            string newUrl = System.Web.VirtualPathUtility.ToAbsolute(serverUrl); //ResolveServerUrl(serverUrl);
            Uri originalUri = HttpContext.Current.Request.Url;
            newUrl = (forceHttps ? "https" : originalUri.Scheme) +
                     "://" + originalUri.Authority + newUrl;

            return newUrl;
        }

        public static string ResolveServerUrl(string serverUrl)
        {
            return ResolveServerUrl(serverUrl, false);
        }

        #region button events

        //Same event is used for save buttom based at bottom
        protected void btnSaveTop_Click(object sender, EventArgs e) //Same event is used for save buttom based at bottom
        {
            if (!Page.IsValid)
            {
                DivMessage.Attributes["class"] = "error rounded-corners";
                LblMessage.Text = "Data validation failed";
                ClientScript.RegisterStartupScript(this.GetType(), "HideLabel", "<script type=\"text/javascript\">setTimeout(\"document.getElementById('" + DivMessage.ClientID + "').style.display='none'\",20000)</script>");
                DivDataForm.Attributes["style"] = "Display:Normal;";
                DivGrid.Attributes["style"] = "Display:None;";
                btnAddTop.Enabled = false;
                btnAddBottom.Enabled = false;
                btnEditTop.Enabled = false;
                btnEditBottom.Enabled = false;
                btnSaveTop.Enabled = true;
                btnSaveBottom.Enabled = true;
                btnAbortTop.Enabled = true;
                btnAbortBottom.Enabled = true;
                hdnVisibleDiv.Value = "DivDataForm";
                btnRefreshTop.Enabled = false;
                btnRefreshBottom.Enabled = false;
                return;
            }
            else
            {
                objRegionMaster.RegionId = Convert.ToInt16(hdnSalesOrderId.Value);
                objRegionMaster.RefCompanyId = Convert.ToByte(Request.Cookies["RefCompanyId"].Value);
                objRegionMaster.RegionName = TxtRegionName.Text;
                objRegionMaster.IsActive = RbActive.Checked == true ? true : false;
                objRegionMaster.SaveData();
                DivMessage.Attributes["style"] = "Display:Normal;";
                if (objRegionMaster.IntMessageCode == 1 | objRegionMaster.IntMessageCode == 2)
                {
                    DivMessage.Attributes["class"] = "success rounded-corners";
                }
                else
                {
                    DivMessage.Attributes["class"] = "error rounded-corners";
                }
                LblMessage.Text = objRegionMaster.StrMessage;
                ClientScript.RegisterStartupScript(this.GetType(), "HideLabel", "<script type=\"text/javascript\">setTimeout(\"document.getElementById('" + DivMessage.ClientID + "').style.display='none'\",20000)</script>");
                DivDataForm.Attributes["style"] = "Display:None;";
                DivGrid.Attributes["style"] = "Display:Normal;";
                btnAddTop.Enabled = true;
                btnAddBottom.Enabled = true;
                btnEditTop.Enabled = true;
                btnEditBottom.Enabled = true;
                btnSaveTop.Enabled = false;
                btnSaveBottom.Enabled = false;
                btnAbortTop.Enabled = false;
                btnAbortBottom.Enabled = false;
                hdnVisibleDiv.Value = "DivGrid";
                btnRefreshTop.Enabled = true;
                btnRefreshBottom.Enabled = true;
                RadGridSalesOrder.DataSource = null;
                RadGridSalesOrder.Rebind();
            }
            //            btnAddTop_Click(sender, e);
        }

        //Same event is used for Add buttom based at bottom
        protected void btnAddTop_Click(object sender, EventArgs e)
        {
            DivDataForm.Attributes["style"] = "Display:Normal;";
            DivGrid.Attributes["style"] = "Display:None;";
            btnAddTop.Enabled = false;
            btnAddBottom.Enabled = false;
            btnEditTop.Enabled = false;
            btnEditBottom.Enabled = false;
            btnSaveTop.Enabled = true;
            btnSaveBottom.Enabled = true;
            btnAbortTop.Enabled = true;
            btnAbortBottom.Enabled = true;
            hdnVisibleDiv.Value = "DivDataForm";
            btnRefreshTop.Enabled = false;
            btnRefreshBottom.Enabled = false;

            hdnSalesOrderId.Value = "0";
            TxtRegionName.Text = String.Empty;
        }

        //Same event is used for edit buttom based at bottom
        protected void btnEditTop_Click(object sender, EventArgs e)
        {
            DivDataForm.Attributes["style"] = "Display:Normal;";
            DivGrid.Attributes["style"] = "Display:None;";
            btnAddTop.Enabled = false;
            btnAddBottom.Enabled = false;
            btnEditTop.Enabled = false;
            btnEditBottom.Enabled = false;
            btnSaveTop.Enabled = true;
            btnSaveBottom.Enabled = true;
            btnAbortTop.Enabled = true;
            btnAbortBottom.Enabled = true;
            hdnVisibleDiv.Value = "DivDataForm";
            btnRefreshTop.Enabled = false;
            btnRefreshBottom.Enabled = false;


            objRegionMaster.GetData(hdnSalesOrderId.Value);
            TxtRegionName.Text = objRegionMaster.RegionName.ToString();
            if (objRegionMaster.IsActive == true)
            {
                RbActive.Checked = true;
                RbInactive.Checked = false;
            }
            else
            {
                RbActive.Checked = false;
                RbInactive.Checked = true;
            }


        }

        //Same event is used for abort buttom based at bottom
        protected void btnAbortTop_Click(object sender, EventArgs e)
        {
            DivDataForm.Attributes["style"] = "Display:None;";
            DivGrid.Attributes["style"] = "Display:Normal;";
            btnAddTop.Enabled = true;
            btnAddBottom.Enabled = true;
            btnEditTop.Enabled = true;
            btnEditBottom.Enabled = true;
            btnSaveTop.Enabled = false;
            btnSaveBottom.Enabled = false;
            btnAbortTop.Enabled = false;
            btnAbortBottom.Enabled = false;
            hdnVisibleDiv.Value = "DivGrid";
            btnRefreshTop.Enabled = true;
            btnRefreshBottom.Enabled = true;
        }

        //Same event is used for abort buttom based at bottom
        protected void btnRefreshTop_Click(object sender, EventArgs e)
        {
            RadGridSalesOrder.Rebind();
            btnAddTop.Enabled = true;
            btnAddBottom.Enabled = true;
            btnEditTop.Enabled = true;
            btnEditBottom.Enabled = true;
            btnSaveTop.Enabled = false;
            btnSaveBottom.Enabled = false;
            btnAbortTop.Enabled = false;
            btnAbortBottom.Enabled = false;
            btnRefreshTop.Enabled = true;
            btnRefreshBottom.Enabled = true;
        }

        #endregion

        #region validation rules

        protected void ValidateForNotBlank(object source, ServerValidateEventArgs e)
        {
            if (e.Value.Length == 0)
                e.IsValid = false;
            else
                e.IsValid = true;
        }

        #endregion

        #region radgrid events

        protected void RadGridSalesOrder_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            if (!e.IsFromDetailTable)
            {
                RadGridSalesOrder.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderMaster INNER JOIN PartyMaster ON SalesOrderMaster.PartyId = PartyMaster.PartyId", intPageIndex, RadGridSalesOrder.PageSize, "SalesOrderMaster.SalesOrderId, SalesOrderMaster.SalesOrderDate, PartyMaster.PartyName, SalesOrderMaster.PartyRefPONo, SalesOrderMaster.PartyRefPODate, SalesOrderMaster.IsActive", strSortOrder, strRadGridFilter, ref intVirtualRowCount);
                RadGridSalesOrder.MasterTableView.VirtualItemCount = intVirtualRowCount;
            }
        }

        protected void RadGridSalesOrder_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
        {
            GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
            switch (e.DetailTableView.Name)
            {
                case "OrderDetail":
                    {
                        int intPageIndex = e.DetailTableView.CurrentPageIndex+1;
                        strSalesOrderId = dataItem.GetDataKeyValue("SalesOrderId").ToString();
                        e.DetailTableView.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderDetail INNER JOIN ItemMaster ON SalesOrderDetail.ItemCode = ItemMaster.ItemCode", 1, RadGridSalesOrder.PageSize, "SalesOrderDetail.ItemCode, ItemMaster.ItemName, SalesOrderDetail.OrderQty, SalesOrderDetail.Rate, SalesOrderDetail.IsActive", strSortOrder, " SalesOrderDetail.SalesOrderId = '" + strSalesOrderId + "'", ref intVirtualRowCount1);
                        e.DetailTableView.VirtualItemCount = intVirtualRowCount1;
                        e.DetailTableView.CurrentPageIndex = intPageIndex - 1;
                        break;
                    }

                case "Order":
                    {
                        //string OrderID = dataItem.GetDataKeyValue("OrderID").ToString();
                        //e.DetailTableView.DataSource = GetDataTable("SELECT * FROM [Order Details] WHERE OrderID = " + OrderID);
                        break;
                    }
            }
        }
         

        protected void RadGridSalesOrder_PageIndexChanged(object sender, GridPageChangedEventArgs e)
        {
            intPageIndex = e.NewPageIndex + 1;
            RadGridSalesOrder.DataSource = null;
            RadGridSalesOrder.Rebind();
        }

        protected void RadGridSalesOrder_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
        {
            intPageIndex = 1;
        }

        protected void RadGridSalesOrder_ItemCommand(object sender, GridCommandEventArgs e)
        {
            string strFilter = "";
           
            if ((e.CommandName == RadGrid.FilterCommandName))
            {
                DataTable objDt;
                Pair filterPair = (Pair)e.CommandArgument;
                e.Canceled = true;
                foreach (ClsFilterCriteria obb in objClsFilterCriteria)
                {
                    if (obb.ColumnName.ToUpper() == filterPair.Second.ToString().ToUpper())
                    {
                        TextBox filterBox = (e.Item as GridFilteringItem)[filterPair.Second.ToString()].Controls[0] as TextBox;
                        obb.FilterCriteria = objFunLib.GetFilterCriteria(filterPair.First.ToString(), filterBox.Text) == "" ? null : objFunLib.GetFilterCriteria(filterPair.First.ToString(), filterBox.Text);
                        if (obb.FilterCriteria == null)
                        {
                            foreach (GridColumn column in RadGridSalesOrder.MasterTableView.RenderColumns)
                            {
                                if (column.SupportsFiltering())
                                {
                                    if (filterPair.Second.ToString().ToUpper() == column.UniqueName.ToString().ToUpper())
                                    {
                                        column.CurrentFilterValue = string.Empty;
                                    }
                                }
                            }
                        }
                    }
                }
                foreach (ClsFilterCriteria obb in objClsFilterCriteria)
                {
                    if (obb.FilterCriteria != null & obb.FilterCriteria != "")
                    {
                        if (strFilter == "")
                        {
                            strFilter = obb.ColumnName + " " + obb.FilterCriteria;
                        }
                        else
                        {
                            strFilter = strFilter + " And " + obb.ColumnName + " " + obb.FilterCriteria + " ";
                        }
                    }
                }
                strRadGridFilter = strFilter;
                intPageIndex = 1;
                //RadGridSalesOrder.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("RegionMaster", intPageIndex, RadGridSalesOrder.PageSize, "RegionId, RegionName, IsActive", strSortOrder, strRadGridFilter, ref intVirtualRowCount);
                RadGridSalesOrder.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderMaster INNER JOIN PartyMaster ON SalesOrderMaster.PartyId = PartyMaster.PartyId", intPageIndex, RadGridSalesOrder.PageSize, "SalesOrderMaster.SalesOrderId, SalesOrderMaster.SalesOrderDate, PartyMaster.PartyName, SalesOrderMaster.PartyRefPONo, SalesOrderMaster.PartyRefPODate, SalesOrderMaster.IsActive", strSortOrder, strRadGridFilter, ref intVirtualRowCount);
                RadGridSalesOrder.MasterTableView.VirtualItemCount = intVirtualRowCount;
                RadGridSalesOrder.Rebind();
            }
            DivDataForm.Attributes["style"] = "Display:None;";
            DivGrid.Attributes["style"] = "Display:Normal;";
            btnAddTop.Enabled = true;
            btnAddBottom.Enabled = true;
            btnEditTop.Enabled = true;
            btnEditBottom.Enabled = true;
            btnSaveTop.Enabled = false;
            btnSaveBottom.Enabled = false;
            btnAbortTop.Enabled = false;
            btnAbortBottom.Enabled = false;
            hdnVisibleDiv.Value = "DivGrid";
            btnRefreshTop.Enabled = true;
            btnRefreshBottom.Enabled = true;

        }

        protected void RadGridSalesOrder_SortCommand(object sender, GridSortCommandEventArgs e)
        {
            int intLoc = 0;
            GridTableView tableView = e.Item.OwnerTableView;
            e.Canceled = true;
            GridSortExpression expression = new GridSortExpression();
            if (expression.SortOrder != GridSortOrder.None)
            {
                expression.FieldName = e.SortExpression;
                if (RadGridSalesOrder.MasterTableView.SortExpressions.ContainsExpression(e.SortExpression))
                {
                    intLoc = RadGridSalesOrder.MasterTableView.SortExpressions.IndexOf(expression) < 0 ? 0 : RadGridSalesOrder.MasterTableView.SortExpressions.IndexOf(expression);
                }

                if (RadGridSalesOrder.MasterTableView.SortExpressions.Count == 0 || RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].FieldName != e.SortExpression)
                {
                    expression.SortOrder = GridSortOrder.Descending;
                }
                else if (RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].SortOrder == GridSortOrder.Descending)
                {
                    expression.SortOrder = GridSortOrder.Ascending;
                }
                else if (RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].SortOrder == GridSortOrder.Ascending)
                {
                    expression.SortOrder = GridSortOrder.None;
                }
                else if (RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].SortOrder == GridSortOrder.None)
                {
                    expression.SortOrder = GridSortOrder.Descending;
                }
                if (string.IsNullOrEmpty(strSortOrder) == false)
                {
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "ASC,", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "DESC,", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "ASC", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "DESC", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + ", ", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " ", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression, "");
                    strSortOrder = strSortOrder.Trim();
                }

                if (strSortOrder == "" | String.IsNullOrEmpty(strSortOrder))
                {
                    if (expression.SortOrder == GridSortOrder.None)
                    {
                        strSortOrder = expression.ToString() + "ASC";
                    }
                    else
                    {
                        strSortOrder = expression.ToString();
                    }
                }
                else
                {
                    if (strSortOrder.Substring(0, 1) == ",")
                    {
                        strSortOrder = strSortOrder.Substring(1, strSortOrder.Trim().Length - 1);
                    }
                    if (strSortOrder.Substring(strSortOrder.Trim().Length - 1, 1) == ",")
                    {
                        strSortOrder = strSortOrder.Substring(0, strSortOrder.Trim().Length - 1);
                    }
                    if (expression.SortOrder != GridSortOrder.None)
                    {
                        strSortOrder = strSortOrder + ", " + expression.ToString();
                    }
                }
                RadGridSalesOrder.MasterTableView.SortExpressions.AddSortExpression(expression);
                DivDataForm.Attributes["style"] = "Display:None;";
                DivGrid.Attributes["style"] = "Display:Normal;";
                btnAddTop.Enabled = true;
                btnAddBottom.Enabled = true;
                btnEditTop.Enabled = true;
                btnEditBottom.Enabled = true;
                btnSaveTop.Enabled = false;
                btnSaveBottom.Enabled = false;
                btnAbortTop.Enabled = false;
                btnAbortBottom.Enabled = false;
                hdnVisibleDiv.Value = "DivGrid";
                btnRefreshTop.Enabled = true;
                btnRefreshBottom.Enabled = true;
                RadGridSalesOrder.DataSource = null;
                RadGridSalesOrder.Rebind();
            }
        }

        #endregion


    }
}​

Thanks

 

Milind

7 Answers, 1 is accepted

Sort by
0
Milind
Top achievements
Rank 1
answered on 13 Oct 2015, 06:08 AM

Hello,

 

Anybody on how to address the above query ?

 

Milind Shevade

0
Kostadin
Telerik team
answered on 14 Oct 2015, 05:14 AM
Hi Milind,

I examined the provided code and as far as I can see it looks correct. Nevertheless, could you please check for any server or client side exception which might cause the mentioned issues. Also I would appreciate if you can provide a small runnable sample where the issue could be observe in order to debug it locally.

Regards,
Kostadin
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
0
Milind
Top achievements
Rank 1
answered on 30 Oct 2015, 08:22 AM

Hi,

 

Sorry for late reply. 

I tried solution suggested but even after hosting the app on different server the problem could not be resolved. since I can not attach a demo project (Zip file with size of 1.5 MB)which will help you in understanding issue faced by me I am sending the source code of web page, web config and database script. In the sales order grid (Attached Project) there are two rows of data. If you click on second row the order details are shown. If you try to go to second page then the second line in main grid collapses. You can not go to other pages at all. Also if you want to collapse the expanded row, that also is not working. I will be thankful if you suggest a solution for this.

PS -

Error displayed if zip file for demo project is attached as follows :

The selected file(s) cannot be attached because it may exceed the maximum attachment size (2 MB) or is from not allowed type (allowed: .gif, .jpg, .jpeg, .png).​

Thanks & regards,

 

Milind Shevade

 

Master page -  

 <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Erp.master.cs" Inherits="ErpWebApplication.Erp"  EnableViewState="false" ViewStateMode="Disabled" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>PnL</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <script type="text/javascript">
            window.history.forward(1);
        </script>
        <%--<telerik:RadStyleSheetManager ID="RadStyleSheetManager1" Runat="server">
        <StyleSheets>
        <telerik:StyleSheetReference Path="~/StyleSheets/StyleSheet1.css" />
        <telerik:StyleSheetReference Path="~/StyleSheets/MTIPLFramework.css" />
        </StyleSheets>
        </telerik:RadStyleSheetManager>--%>
        <link href="StyleSheets/StyleSheet1.css" rel="stylesheet" />
        <link href="StyleSheets/MTIPLFramework.css" rel="stylesheet" />
        <style>
            .RadToolBar_Default .rtbOuter {
            padding: 0px !important;
            border: 0px !important;
            border-color: transparent !important;
            background-color: transparent !important;
            background-image: none  !important; 
            }
            
            .rcbSlide { z-index:8000 !important; }  
        </style>
    </head>
    <body  class="body">
        <form id="form1" runat="server">
            <%--<telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
            <Scripts>
            <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
            <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
            <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
            </Scripts>
            </telerik:RadScriptManager>--%>
            <asp:ScriptManager ID="ScriptManager1" runat="server"  EnablePageMethods="true" LoadScriptsBeforeUI="true">
                <Scripts>
                    <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
                    <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
                    <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
                </Scripts>
            </asp:ScriptManager>
            <telerik:RadInputManager ID="RadInputManager1" runat="server" >
                <telerik:TextBoxSetting BehaviorID="BINotEmpty" SelectionOnFocus="SelectAll" ErrorMessage="" Validation-IsRequired="true" ClearValueOnError="true">
                </telerik:TextBoxSetting>
                <telerik:DateInputSetting BehaviorID="BIDateInput" SelectionOnFocus="SelectAll" Validation-IsRequired="true" DateFormat="dd/MM/yyyy" ErrorMessage="" EmptyMessage="Enter Date">
                </telerik:DateInputSetting>
                <telerik:NumericTextBoxSetting BehaviorID="BIIntegerInput" SelectionOnFocus="SelectAll" Validation-IsRequired="true" AllowRounding="false" ErrorMessage="" DecimalDigits="0" ClearValueOnError="true" Type="Number" EmptyMessage="Enter Qty" >
                </telerik:NumericTextBoxSetting>
                <telerik:NumericTextBoxSetting BehaviorID="BIAmountInput" SelectionOnFocus="SelectAll" Validation-IsRequired="true" AllowRounding="false" ErrorMessage="" DecimalDigits="2" ClearValueOnError="true" Type="Number" >
                </telerik:NumericTextBoxSetting>
                <telerik:RegExpTextBoxSetting BehaviorID="BIEmailInput" Validation-IsRequired="true" ValidationExpression="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" ErrorMessage="">
                </telerik:RegExpTextBoxSetting>
            </telerik:RadInputManager>
            <div>
                <telerik:RadAjaxManager ID="RadAjaxManager1"  runat="server">

                </telerik:RadAjaxManager>
                <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" Runat="server" style="position:absolute; top:0; left:0; Height:100%; Width:100%;" IsSticky="True" EnableSkinTransparency="true" Transparency="0" />
                <telerik:RadFormDecorator ID="RadFormDecorator1" Runat="server" DecoratedControls="All" RenderMode="Lightweight" EnableRoundedCorners="true"  />
                <div class="container-fluid left-margin-0 left-padding-0 right-margin-0 right-padding-0">
                    <div class="row" >
                        <div class="col-md-16"> <%--style="background-color:transparent;">--%> <%--#2b373d--%>
                            <div id="Logo" class="col-md-4 text-align-center top-margin-4">
                                <a id="A1" href= "~/frmMain.aspx" runat="server">
                                    <asp:Image ID="Image2" AlternateText="MSPRO" runat="server" CssClass="img-responsive top-margin-4"  
                                               BorderStyle="None" BorderWidth="0" ToolTip="Home" ImageUrl="~/Images/CompanyLogo.png"  />
                                </a>
                            </div>
                            <div id="ErpToolbar" class="col-md-12 text-align-right top-margin-10" > <%--vertical-align-middle--%>
                                <%--<p class="right-padding-0 top-margin-1 bottom-margin-0">--%><!--Label ="Select Skin :"
                                LabelCssClass="label-font-setting-small left-padding-3 top-padding-3" -->
                                <label runat="server" class="label-font-setting-small">Skin :</label>
                                &nbsp;
                                <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="True" PersistenceMode="Cookie" RenderMode="Lightweight" OnSkinChanged="RadSkinManager1_SkinChanged" />
                                <%--<telerik:RadComboBox ID="cmbSkin" runat="server" AutoPostBack="True" OnSelectedIndexChanged="cmbSkin_SelectedIndexChanged" ZIndex="7050" CausesValidation="False">
                                <Items>
                                <telerik:RadComboBoxItem runat="server" Text="Black" Value="Black" />
                                <telerik:RadComboBoxItem runat="server" Text="Black Metro Touch" Value="BlackMetroTouch" />
                                <telerik:RadComboBoxItem runat="server" Text="Bootstrap" Value="Bootstrap" />
                                <telerik:RadComboBoxItem runat="server" Text="Glow" Value="Glow" />
                                <telerik:RadComboBoxItem runat="server" Text="Metro" Value="Metro" />
                                <telerik:RadComboBoxItem runat="server" Text="Metro Touch" Value="MetroTouch" />
                                <telerik:RadComboBoxItem runat="server" Text="Office 2007" Value="Office2007" />
                                <telerik:RadComboBoxItem runat="server" Text="Office 2010 Black" Value="Office2010Black" />
                                <telerik:RadComboBoxItem runat="server" Text="Office 2010 Blue" Value="Office2010Blue" />
                                <telerik:RadComboBoxItem runat="server" Text="Outlook" Value="Outlook" />
                                <telerik:RadComboBoxItem runat="server" Text="Silk" Value="Silk" />
                                <telerik:RadComboBoxItem runat="server" Text="Web20" Value="Web20" />
                                <telerik:RadComboBoxItem runat="server" Text="Web Blue" Value="WebBlue" />
                                <telerik:RadComboBoxItem runat="server" Text="Windows 7" Value="Windows7" />
                                </Items>
                                </telerik:RadComboBox>--%>
                                <%--</p>--%>
                                <P class="right-padding-0 top-margin-10 bottom-margin-0">
                                    <asp:Label ID="LblDisplayUserName" runat="server" Text="Welcome " CssClass="label-font-setting-small rfdAspLabel"></asp:Label>
                                <%--<label runat="server" id="LblDisplayUserName"  CssClass="label-font-setting-small">Welcome </label>--%>
                                </P>
                                <P class="right-padding-0 top-margin-1 bottom-margin-1">
                                    <asp:Button ID="BtnSignOff" runat="server" Text="Sign off" CausesValidation="False" OnClick="BtnSignOff_Click"></asp:Button>
                                </P>
                            <%--<P class="right-padding-10">
                            <asp:Label ID="LblDisplayUserName1" runat="server" CssClass="label-font-setting-small" Text="Welcome "></asp:Label>
                            </P>
                            <P class="right-padding-10">
                            <asp:Button ID="BtnSignOff1" runat="server" Text="Sign off" OnClick="BtnSignOff_Click" CausesValidation="False"></asp:Button>
                            </P>--%>
                            </div>
                        </div>

                        <div class="col-md-16 padding-margin-set-to-0 left-margin-0 right-margin-0 top-margin-0 bottom-margin-0" >
                            <hr class="HorizontalLine-100-Percent left-margin-0 right-margin-0 top-margin-0 bottom-margin-0 top-padding-0 bottom-padding-0" />
                            <%--<telerik:RadMenu ID="RadMenu1" Runat="server" Width="100%" >
                                <Items>
                                    <telerik:RadMenuItem runat="server" Text="Home">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Purchase">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Sales">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Planning">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Production">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Stock">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Accounts">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="HR">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Masters">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Reports">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Notes">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Messages">
                                    </telerik:RadMenuItem>
                                    <telerik:RadMenuItem runat="server" Text="Help">
                                    </telerik:RadMenuItem>
                                </Items>
                            </telerik:RadMenu>--%>
                            <hr class="HorizontalLine-100-Percent left-margin-0 right-margin-0 top-margin-0 bottom-margin-0 top-padding-0 bottom-padding-0" />
                        </div>
                        <div class="clearfix">
                        </div>

                    </div>
                </div>
                <div class="container-fluid">
                    <div class="row" >
                        <%--<div class="col-md-3">--%>
                        <%--<br />--%>
                        <%--<div class="col-md-16">
                        <fieldset class="border-for-div">
                        <legend class="caption-for-div">Login</legend>
                        <div>
                        <telerik:RadTextBox ID="TxtUserName" runat="server" Width="100%" Label="User :" LabelCssClass="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5" WrapperCssClass="textBoxWrapper"></telerik:RadTextBox>
                        <telerik:RadTextBox ID="TxtPassword" runat="server" Width="100%" Label="Password :" LabelCssClass="MTIPLRadTextBoxLabel label-font-setting-small top-padding-10 left-padding-5" WrapperCssClass="textBoxWrapper"></telerik:RadTextBox>
                        </div>
                        <div class="top-padding-10 top-margin-10 text-align-right">
                        <asp:Button ID="btnSignOn" runat="server" Text="Sign On" OnClick="btnSignOn_Click"  />
                        </div>
                        </fieldset>
                        </div>
                        <div class="clearfix"></div>
                        <br />--%>
                        <%--<div class="col-md-16">
                        <fieldset class="border-for-div">
                        <legend class="caption-for-div">&nbsp;Search Phone Diary&nbsp;</legend>
                        <telerik:RadSearchBox ID="srchIntercom" runat="server" Width="100%"></telerik:RadSearchBox>
                        </fieldset>
                        </div>
                        <div class="clearfix"></div>
                        <br />
                        <div class="col-md-16">
                        <fieldset class="border-for-div">
                        <legend class="caption-for-div">&nbsp;Calendar&nbsp;</legend>
                        <telerik:RadCalendar ID="RadCalendar1" Runat="server" Width="100%" RenderMode="Lightweight" ShowRowHeaders="False" FirstDayOfWeek="Sunday" DayNameFormat="FirstTwoLetters">
                        <WeekendDayStyle CssClass="rcWeekend"></WeekendDayStyle>
                        <CalendarTableStyle CssClass="rcMainTable">
                        </CalendarTableStyle>
                        <OtherMonthDayStyle CssClass="rcOtherMonth"></OtherMonthDayStyle>
                        <OutOfRangeDayStyle CssClass="rcOutOfRange">
                        </OutOfRangeDayStyle>
                        <DisabledDayStyle CssClass="rcDisabled">
                        </DisabledDayStyle>
                        <SelectedDayStyle CssClass="rcSelected"></SelectedDayStyle>
                        <DayOverStyle CssClass="rcHover">
                        </DayOverStyle>
                        <FastNavigationStyle CssClass="RadCalendarMonthView RadCalendarMonthView_Metro">
                        </FastNavigationStyle>
                        <ViewSelectorStyle CssClass="rcViewSel">
                        </ViewSelectorStyle>
                        </telerik:RadCalendar>
                        </fieldset>
                        </div>
                        <div class="clearfix"></div>
                        <br />
                        <div class="col-md-16">
                        <fieldset class="border-for-div">
                        <legend class="caption-for-div">Holiday list</legend>
                        <telerik:RadCalendar ID="RadCalendar2" Runat="server" Width="100%" ShowRowHeaders="False" FirstDayOfWeek="Sunday" DayNameFormat="FirstTwoLetters">
                        <WeekendDayStyle CssClass="rcWeekend"></WeekendDayStyle>
                        <CalendarTableStyle CssClass="rcMainTable">
                        </CalendarTableStyle>
                        <OtherMonthDayStyle CssClass="rcOtherMonth"></OtherMonthDayStyle>
                        <OutOfRangeDayStyle CssClass="rcOutOfRange">
                        </OutOfRangeDayStyle>
                        <DisabledDayStyle CssClass="rcDisabled">
                        </DisabledDayStyle>
                        <SelectedDayStyle CssClass="rcSelected"></SelectedDayStyle>
                        <DayOverStyle CssClass="rcHover">
                        </DayOverStyle>
                        <FastNavigationStyle CssClass="RadCalendarMonthView RadCalendarMonthView_Metro">
                        </FastNavigationStyle>
                        <ViewSelectorStyle CssClass="rcViewSel">
                        </ViewSelectorStyle>
                        </telerik:RadCalendar>
                        </fieldset>
                        </div>
                        <div class="clearfix"></div>--%>
                        <%--</div>--%>
                        <div id="DivContentPlaceHolder" runat="server" class="col-md-16">
                            <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
                            </asp:ContentPlaceHolder>
                        </div>
                    </div>
                </div>
            </div>
        </form>
    </body>
</html>

Master page cs - 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using MTIPLSQLCommonClass;



namespace ErpWebApplication
{
    public partial class Erp : System.Web.UI.MasterPage
    {
        clsSQLCommonLib objFunLib = new clsSQLCommonLib();
        public SqlDataReader objReader;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string strSkin = objFunLib.ReturnFieldData("select defaultSkin from users where userid = '" + Request.Cookies["UserName"].Value.ToString() + "'", false);
                System.Configuration.ConfigurationManager.AppSettings["Telerik.Skin"] = strSkin;
            }
            //RadMenu1.Items.Clear();
            //RadMenu1.DataFieldID = "MenuId";
            //RadMenu1.DataFieldParentID = "MenuParentId";
            //RadMenu1.DataTextField = "MenuDisplayName";
            //RadMenu1.DataNavigateUrlField = "LinkPage";
            //RadMenu1.DefaultGroupSettings.RepeatColumns = 2;
            //RadMenu1.DataSource = objFunLib.ReturnDataTableUsingSP("sp_menu", "tblMenu");
            //RadMenu1.DataBind();
            //LblDisplayUserName.Text = "Welcome <b>" + Request.Cookies["UserName"].Value + "</b>";
        }

        //protected void cmbSkin_SelectedIndexChanged(object sender, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        //{
        //    System.Configuration.ConfigurationManager.AppSettings["Telerik.Skin"] = e.Value;
        //    objFunLib.ExecuteSelectQuery("update users set DefaultSkin = '" + e.Value + "' where userid  = '" + Request.Cookies["UserName"].Value.ToString() + "'");
        //}

        protected void BtnSignOff_Click(object sender, EventArgs e)
        {
            //FormsAuthentication.SignOut();
            //Response.Redirect("~/Login/frmLogin.aspx");
        }

        protected void RadSkinManager1_SkinChanged(object sender, SkinChangedEventArgs e)
        {
            //string strSkin = e.Skin.ToString();
            //objFunLib.ExecuteSelectQuery("update users set DefaultSkin = '" + e.Skin.ToString() + "' where userid  = '" + Request.Cookies["UserName"].Value.ToString() + "'");
            //Response.Redirect("frmMain.aspx");
        }


    }
}​

Sales Order page - 

<%@ Page Title="Sales Order" Language="C#" enableViewState="false" ViewStateMode="Disabled" MasterPageFile="~/Erp.Master" AutoEventWireup="true" CodeBehind="SalesOrderEntry.aspx.cs" Inherits="ErpWebApplication.TransactionData.SalesOrderEntry" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadGridSalesOrder">
                <UpdatedControls>
                    <%--<telerik:AjaxUpdatedControl ControlID="RadGridSalesOrder" />--%>
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManagerProxy>
    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    <%--<Services>
    <asp:ServiceReference Path="~/Services/FetchData.svc" />
    </Services>--%>
    </asp:ScriptManagerProxy>
    <br />
    <div id="DivMessage" runat="server"  >
        <asp:Label ID="LblMessage" runat="server" Text=""></asp:Label>
    </div>
    <div class="clearfix"></div>
    <%--<br />--%>
    <fieldset class="border-inset">
        <legend class="caption-for-selected-page-header">&nbsp;Sales Order&nbsp;</legend>
        <div id="DivDataDisplayInGrid" runat="server"  class="col-md-16" style="background-color:transparent;">
            <div id="DivButtonTop" class="col-md-16" runat="server">
                <fieldset class="border-for-div text-align-Left">
                    <legend class="caption-for-div">&nbsp;Action&nbsp;</legend>
                    <telerik:RadButton ID="btnAddTop" runat="server" Text="Add" RenderMode="Auto" ToolTip="Add SO" OnClick="btnAddTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbAdd" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnEditTop" runat="server" Text="Edit" RenderMode="Auto" ToolTip="Edit SO" OnClick="btnEditTop_Click" CausesValidation="False" >
                        <Icon PrimaryIconCssClass="rbEdit" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnSaveTop" runat="server" Text="Save" RenderMode="Auto" ToolTip="Save/Update SO" OnClick="btnSaveTop_Click" OnClientClicking="SaveConfirm">
                        <Icon PrimaryIconCssClass="rbSave" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnAbortTop" runat="server" Text="Abort" RenderMode="Auto" ToolTip="Abort" OnClick="btnAbortTop_Click" OnClientClicking="SaveConfirm" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbCancel" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnRefreshTop" runat="server" Text="Refresh" RenderMode="Auto" ToolTip="Refresh" OnClick="btnRefreshTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbRefresh" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                </fieldset>
            </div>
            <div class="clearfix"></div>
            <br />
            <div id="DivGrid" class="col-md-16" runat="server">
                <fieldset class="border-for-div">
                    <legend class="caption-for-div">&nbsp;Sales Order List&nbsp;</legend>
                    <%--                <telerik:RadSearchBox ID="SearchRegionName" EmptyMessage="Search Region" Width="100%" runat="server" DataContextKeyField="RegionName" TabIndex="1" OnSearch="SearchRegionName_Search" EnableAutoComplete="true" >
                    <WebServiceSettings Path="SalesOrder.aspx" Method="GetSearchBoxResults" />
                    </telerik:RadSearchBox>--%>

                    <telerik:RadGrid ID="RadGridSalesOrder" runat="server" EnableHeaderContextMenu="true" AllowFilteringByColumn="True" AutoPostBackOnFilter="true" EnableViewState="false"
                                     AllowPaging="True" EnableLinqExpressions="false" AllowCustomPaging="true" AllowSorting="True" AutoGenerateColumns="False" RenderMode="Auto"
                                     GroupPanelPosition="Top" ShowGroupPanel="false"
                                     OnNeedDataSource="RadGridSalesOrder_NeedDataSource" 
                                     OnDetailTableDataBind="RadGridSalesOrder_DetailTableDataBind"
                                     OnItemCommand="RadGridSalesOrder_ItemCommand" 
                                     OnPageIndexChanged="RadGridSalesOrder_PageIndexChanged" 
                                     OnSortCommand="RadGridSalesOrder_SortCommand" 
                                     OnPageSizeChanged="RadGridSalesOrder_PageSizeChanged" >
                        <ClientSettings AllowDragToGroup="True" EnableRowHoverStyle="True" >
                            <Scrolling AllowScroll="True" UseStaticHeaders="True"  />
                            <Selecting AllowRowSelect="True"  />
                            <ClientEvents OnRowSelected="OnRowSelected" />
                        </ClientSettings>
                        <MasterTableView CommandItemDisplay="TopAndBottom" DataKeyNames="SalesOrderId" AllowMultiColumnSorting="true" ClientDataKeyNames="SalesOrderId" Name="MasterTbl" EnableViewState="false" RetainExpandStateOnRebind="false" AllowCustomPaging="true">
                            <CommandItemSettings ShowAddNewRecordButton="false" ShowCancelChangesButton="false" ShowExportToCsvButton ="false" ShowExportToExcelButton ="false" ShowExportToPdfButton ="false" 
                                                 ShowExportToWordButton ="false" ShowSaveChangesButton ="false" ShowRefreshButton="false" />
                            <SortExpressions>
                                <telerik:GridSortExpression FieldName="SalesOrderId" SortOrder="Descending" />
                            </SortExpressions>
                            <DetailTables>
                                <telerik:GridTableView DataKeyNames="ItemCode" Name="OrderDetail" Width="100%" AllowCustomSorting="false" AllowCustomPaging="true" EnableViewState="false" AllowFilteringByColumn="false" PageSize="5" ShowFooter="true" AllowSorting="false" >
                                    <SortExpressions>
                                        <telerik:GridSortExpression FieldName="ItemCode" SortOrder="Ascending" />
                                    </SortExpressions>
                                    <Columns>
                                        <telerik:GridBoundColumn HeaderText="Item Code" DataField="ItemCode" SortExpression="ItemCode" UniqueName="ItemCode" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" >
                                            <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                            <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                        </telerik:GridBoundColumn>
                                        <telerik:GridBoundColumn HeaderText="Item Name" DataField="ItemName" SortExpression="ItemName" UniqueName="ItemName" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" FooterText ="Total : " >
                                            <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="30%"  />
                                            <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="30%"  />
                                            <FooterStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="30%"  />
                                        </telerik:GridBoundColumn>
                                        <telerik:GridBoundColumn HeaderText="Qty" DataField="OrderQty" Aggregate="Sum" SortExpression="OrderQty" UniqueName="OrderQty" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" DataFormatString="{0:###0.00}" >
                                            <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                            <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                            <FooterStyle  HorizontalAlign="Right" VerticalAlign="Middle" Width="10%" />
                                        </telerik:GridBoundColumn>
                                        <telerik:GridBoundColumn HeaderText="Rate" DataField="Rate" SortExpression="Rate" UniqueName="Rate" Groupable="False" AllowFiltering="false" Visible="false" FilterControlWidth="60%"  DataFormatString="{0:###0.00}">
                                            <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                            <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                        </telerik:GridBoundColumn>
                                        <telerik:GridCalculatedColumn HeaderText="Amount" UniqueName="Amount" DataType="System.Double" DataFields="OrderQty, Rate" Expression="{0}*{1}" FooterText="Total : " Aggregate="Sum" DataFormatString="{0:###0.00}">
                                            <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                            <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                            <FooterStyle  HorizontalAlign="Right" VerticalAlign="Middle" Width="10%" />
                                        </telerik:GridCalculatedColumn>
                                        <telerik:GridTemplateColumn HeaderText="Status" DataField ="IsActive" UniqueName="IsActive" Groupable="false" AllowSorting="false" AllowFiltering="false" Visible="true" >
                                            <ItemTemplate>
                                            <%# Boolean.Parse(Eval("IsActive").ToString()) ? "<font color='#006600'><b> Active</b></font>" : "<font color='#990000'><b>Inactive</b></font>" %>
                                            </ItemTemplate>
                                            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                        </telerik:GridTemplateColumn>
                                    </Columns>
                                    <PagerStyle Mode="NextPrevNumericAndAdvanced"  />
                                </telerik:GridTableView>
                            </DetailTables>
                            <Columns>
                                <%--                            <telerik:GridClientSelectColumn Text="Edit" UniqueName="colRowSelect" Visible="False">
                                </telerik:GridClientSelectColumn>
                                <telerik:GridEditCommandColumn UniqueName="edtColumn" ButtonType="ImageButton">
                                </telerik:GridEditCommandColumn>--%>
                                <telerik:GridBoundColumn HeaderText="SO Id" DataField="SalesOrderId" SortExpression="SalesOrderId" UniqueName="SalesOrderId" Groupable="False" AllowFiltering="True" Visible="True" FilterControlWidth="60%" >
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="SO Date" DataField="SalesOrderDate" SortExpression="SalesOrderDate" UniqueName="SalesOrderDate" Groupable="true" AllowFiltering="True" Visible="True" FilterControlWidth="60%" DataFormatString="{0:dd/MM/yyyy}" >
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="Party Name" DataField="PartyName" SortExpression="PartyName" UniqueName="PartyName" Groupable="True"  AllowFiltering="True" Visible="True"  FilterControlWidth="90%">
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="47%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="47%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="Party Ref No" DataField="PartyRefPONo" SortExpression="PartyRefPONo" UniqueName="PartyRefPONo" Groupable="false"  AllowFiltering="True" Visible="True"  FilterControlWidth="70%">
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="Party Ref Date" DataField="PartyRefPODate" SortExpression="PartyRefPODate" UniqueName="PartyRefPODate" Groupable="false"  AllowFiltering="True" Visible="True"  FilterControlWidth="70%"  DataFormatString="{0:dd/MM/yyyy}">
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridTemplateColumn HeaderText="Status" DataField ="IsActive" UniqueName="IsActive" Groupable="false" AllowSorting="false" AllowFiltering="false" Visible="true" >
                                    <ItemTemplate>
                                    <%# Boolean.Parse(Eval("IsActive").ToString()) ? "<font color='#006600'><b> Active</b></font>" : "<font color='#990000'><b>Inactive</b></font>" %>
                                    </ItemTemplate>
                                    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridTemplateColumn>
                            <%--<telerik:GridButtonColumn CommandName="Delete" Text="Deactivate" UniqueName="column" ButtonType="ImageButton" ConfirmText="Are you Sure ?" ConfirmTitle="Confirm" ShowSortIcon="False">
                            </telerik:GridButtonColumn>--%>
                            </Columns>
                            <CommandItemStyle HorizontalAlign="Left" />
                        </MasterTableView>
                        <PagerStyle Mode="NextPrevNumericAndAdvanced"  />
                        <FilterMenu CssClass="cssForFilterButton">
                        </FilterMenu>
                        <CommandItemStyle HorizontalAlign="Left" />
                        <FilterItemStyle HorizontalAlign="Left" />
                        <GroupingSettings ShowUnGroupButton = "false" />
                    </telerik:RadGrid>

                </fieldset>
            </div>
            <div class="clearfix"></div>
            <div id="DivDataForm" class="col-md-16" style="background-color:transparent;" runat="server">
                <fieldset class="border-for-div">
                    <legend class="caption-for-div">Sales Order Header</legend>
                    <br />
                    <asp:HiddenField ID="hdnSalesOrderId" runat="server" Value="0" />
                    <asp:HiddenField ID="hdnVisibleDiv" runat="server" Value="DivGrid" />
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Customer : </label>
                        <telerik:RadComboBox ID="CmbParty" runat="server" Width="100%" AllowCustomText="true" EnableLoadOnDemand="true" MaxHeight="300" TabIndex="1"  ShowToggleImage="true" EnableVirtualScrolling="true" ShowMoreResultsBox="true" DataTextField="PartyName" DataValueField="PartyId" >
                            <WebServiceSettings Method="GetPartyComboBoxResults" Path="SalesOrderEntry.aspx" />
                        </telerik:RadComboBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Customer can not be blank" ControlToValidate="CmbParty" Display="Dynamic" CssClass="ruError"></asp:RequiredFieldValidator>
                        <asp:CustomValidator id="CustomValidator2" runat="server" ErrorMessage = "Invalid Customer" ControlToValidate = "CmbParty" Display="Dynamic" CssClass="ruError" OnServerValidate="PartyServerValidate"></asp:CustomValidator> <%-- ClientValidationFunction="ValidateCountryInDatabase"--%>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Consignee : </label>
                        <telerik:RadComboBox ID="CmbConsignee" runat="server" Width="100%" ShowToggleImage="true" AllowCustomText="true" EnableLoadOnDemand="true" MaxHeight="300" TabIndex="2" EnableVirtualScrolling="true" ShowMoreResultsBox="true"  DataTextField="PartyName" DataValueField="PartyId" >
                            <WebServiceSettings Method="GetPartyComboBoxResults" Path="SalesOrderEntry.aspx" />
                        </telerik:RadComboBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Consignee can not be blank" ControlToValidate="CmbConsignee" Display="Dynamic" CssClass="ruError"></asp:RequiredFieldValidator>
                        <asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage = "Invalid Consignee" ControlToValidate = "CmbConsignee" Display="Dynamic" CssClass="ruError" OnServerValidate="PartyServerValidate"></asp:CustomValidator> <%-- ClientValidationFunction="ValidateCountryInDatabase"--%>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Sales Order No :</label>
                        <asp:TextBox ID="TxtSONo" runat="server" Width="100%" TabIndex="3" CausesValidation="True" placeholder="Enter Sales Order">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="Order no can not be blank" ControlToValidate="TxtSONo" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:CustomValidator id="CustomValidator3" runat="server" ErrorMessage = "SO No can not be duplicate" ControlToValidate = "TxtSONo" Display="Dynamic" CssClass="ruError" OnServerValidate="SoServerValidate"></asp:CustomValidator> <%-- ClientValidationFunction="ValidateCountryInDatabase"--%>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Sales Order Date :</label>
                        <asp:TextBox ID="TxtOrderDate" runat="server" Width="100%" TabIndex="4" CausesValidation="True" placeholder="Enter Sales Order Date">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Order date can not be blank" ControlToValidate="TxtOrderDate" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:CompareValidator ID="ValidatorForActiveTillDate" runat="server" ControlToValidate="TxtOrderDate" Type="Date" Operator="DataTypeCheck" ErrorMessage="Invalid Date Format" CssClass="ruError" EnableClientScript="true"></asp:CompareValidator>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Customer Ref No :</label>
                        <asp:TextBox ID="TxtPartyRefNo" runat="server" Width="100%" TabIndex="5" CausesValidation="True" placeholder="Enter Party Ref No">
                        </asp:TextBox>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Customer Ref Date :</label>
                        <asp:TextBox ID="TxtPartyRefDate" runat="server" Width="100%" TabIndex="6" CausesValidation="True" placeholder="Enter Party Ref Date">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Customer ref date can not be blank" ControlToValidate="TxtPartyRefDate" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="TxtPartyRefDate" Type="Date" Operator="DataTypeCheck" ErrorMessage="Invalid Date Format" CssClass="ruError" EnableClientScript="true"></asp:CompareValidator>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Discount :</label>
                        <asp:TextBox ID="TxtDiscountPercentage" runat="server" Width="100%" TabIndex="7" CausesValidation="True" placeholder="Enter Discount Percentage"/>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ErrorMessage="Discount percentage can not be blank" ControlToValidate="TxtDiscountPercentage" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator ID="Regex1" runat="server" ValidationExpression="((\d+)((\.\d{1,2})?))$" ErrorMessage="Please enter discount percentage with 2 decimal places." ControlToValidate="TxtDiscountPercentage" CssClass="ruError"  Display="Dynamic" />
                        <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TxtDiscountPercentage" CssClass="ruError" ErrorMessage="Enter discount percentage between 0 to 99.99" MaximumValue="99.99" MinimumValue="0" Type="Double"  Display="Dynamic"></asp:RangeValidator>
                    </div>
                    <div class="col-md-4">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Order Face :</label>
                        <telerik:RadComboBox ID="CmbOrderStatus" runat="server" Width="100%" MaxHeight="300px" TabIndex="8" >
                            <Items>
                                <telerik:RadComboBoxItem runat="server" Selected="True" Text="Open" Value="O" />
                                <telerik:RadComboBoxItem runat="server" Text="Completed" Value="C" />
                                <telerik:RadComboBoxItem runat="server" Text="Terminated" Value="T" />
                                <telerik:RadComboBoxItem runat="server" Text="Short Closed" Value="S" />
                            </Items>
                        </telerik:RadComboBox>
                    </div>
                    <div class="clearfix"></div>
                    <div class="col-md-5">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Packing And Forwarding :</label>
                        <asp:TextBox ID="TxtPackingAndForwarding" runat="server" Width="100%" TabIndex="9" TextMode="MultiLine" Rows="3" placeholder="Enter Packing And Forwarding Details">
                        </asp:TextBox>
                    </div>
                    <div class="col-md-5">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Payment Terms :</label>
                        <asp:TextBox ID="TxtPaymentTerms" runat="server" Width="100%" TabIndex="10" TextMode="MultiLine" Rows="3" placeholder="Enter Payment Term Details">
                        </asp:TextBox>
                    </div>
                    <div class="col-md-6">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Delivery Terms :</label>
                        <asp:TextBox ID="TxtDeliveryTerms" runat="server" Width="100%" TabIndex="11" TextMode="MultiLine" Rows="3" placeholder="Enter Delivery Term Details">
                        </asp:TextBox>
                    </div>
                    <div class="clearfix"></div>
                    <div class="col-md-16">
                        <%--<fieldset class="border-for-div">
                            <legend class="caption-for-div">Status</legend>--%>
                        <asp:Panel runat="server" CssClass="top-padding-10">
                            <asp:Radiobutton ID="RbActive" runat="server" Text="Active" Checked="true" TabIndex="31" class="label-font-setting-medium"  GroupName="ActiveInactive" />
                            <asp:Radiobutton ID="RbInactive" runat="server" Text="In-Active" TabIndex="32" class="label-font-setting-medium"  GroupName="ActiveInactive" />
                        <%--</fieldset>--%>
                        </asp:Panel>
                        <br />
                    </div>
                </fieldset>
                <br />
                <fieldset class="border-for-div">
                    <legend class="caption-for-div">Sales Order Detail</legend>
                    <br />
                    <div class="col-md-3">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Order Item : </label>
<%--                        <telerik:RadComboBox ID="RadComboBox1" runat="server" Width="100%" ShowToggleImage="true" AllowCustomText="true" EnableLoadOnDemand="true" MaxHeight="300" TabIndex="2" EnableVirtualScrolling="true" ShowMoreResultsBox="true"  DataTextField="PartyName" DataValueField="PartyId" >
                            <WebServiceSettings Method="GetPartyComboBoxResults" Path="SalesOrderEntry.aspx" />
                        </telerik:RadComboBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ErrorMessage="Consignee can not be blank" ControlToValidate="CmbConsignee" Display="Dynamic" CssClass="ruError"></asp:RequiredFieldValidator>
                        <asp:CustomValidator id="CustomValidator4" runat="server" ErrorMessage = "Invalid Consignee" ControlToValidate = "CmbConsignee" Display="Dynamic" CssClass="ruError" OnServerValidate="PartyServerValidate"></asp:CustomValidator> <%-- ClientValidationFunction="ValidateCountryInDatabase"--%>
                        <asp:TextBox ID="TxtItemCode" runat="server" Width="100%" TabIndex="5" CausesValidation="True" onblur="CallMethod()">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="ReqItemCode" runat="server" ErrorMessage="Itemcode can not be blank" ControlToValidate="TxtItemCode" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:CustomValidator id="CustomValidator4" runat="server" ErrorMessage = "Invalid Itemcode" ControlToValidate = "TxtItemCode" Display="Dynamic" CssClass="ruError" OnServerValidate="ItemCodeServerValidate" ClientValidationFunction="ItemCodeClientValidate"></asp:CustomValidator> <%-- ClientValidationFunction="ValidateCountryInDatabase"--%>
                    </div>
                    <%--<div class="col-md-5">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Item Name :</label>
                        <asp:TextBox ID="txtItemName" runat="server" Width="100%" TabIndex="6" placeholder="Item Name" ReadOnly="true" >
                        </asp:TextBox>
                    </div>--%>
                    <div class="col-md-2">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">Order Qty :</label>
                        <asp:TextBox ID="TxtOrderQty" runat="server" Width="100%" TabIndex="6" CausesValidation="True" placeholder="Enter order qty">
                        </asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" ErrorMessage="Order qty can not be blank" ControlToValidate="TxtOrderQty" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="TxtOrderQty" Type="Integer" Operator="DataTypeCheck" ErrorMessage="Order qty should be an integer value" Display="Dynamic" CssClass="ruError" EnableClientScript="true"></asp:CompareValidator>
                    </div>
                    <div class="col-md-3">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">&nbsp;</label>
                        <asp:Panel ID="Panel1" runat="server">
                            <asp:Radiobutton ID="Radiobutton1" runat="server" Text="Active" Checked="true" TabIndex="31" class="label-font-setting-medium"  GroupName="ActiveInactive" />
                            <asp:Radiobutton ID="Radiobutton2" runat="server" Text="In-Active" TabIndex="32" class="label-font-setting-medium"  GroupName="ActiveInactive" />
                        </asp:Panel>
                    </div>
                    <div class="col-md-3">
                        <label class="MTIPLRadTextBoxLabel label-font-setting-small left-padding-5">&nbsp;</label>
                        <telerik:RadButton ID="btnAddDetailRow" runat="server" Text="Add/update Item" RenderMode="Auto" ToolTip="Add/update order item" OnClick="btnAddTop_Click" CausesValidation="true">
                            <Icon PrimaryIconCssClass="rbAdd" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                        </telerik:RadButton>
                    </div>
                    <div class="clearfix"></div>
                    <br />
                    <div class="col-md-16">
                    <telerik:RadGrid ID="RadGridOrderDetail" runat="server" EnableHeaderContextMenu="true" AllowFilteringByColumn="True" AutoPostBackOnFilter="true" EnableViewState="false"
                                     AllowPaging="True" EnableLinqExpressions="false" AllowCustomPaging="true" AllowSorting="True" AutoGenerateColumns="False" RenderMode="Auto"
                                     GroupPanelPosition="Top" ShowGroupPanel="false"
                                     OnNeedDataSource="RadGridOrderDetail_NeedDataSource" 
                                     OnPageIndexChanged="RadGridOrderDetail_PageIndexChanged" 
                                     OnPageSizeChanged="RadGridOrderDetail_PageSizeChanged" >
                        <ClientSettings AllowDragToGroup="True" EnableRowHoverStyle="True" >
                            <Scrolling AllowScroll="True" UseStaticHeaders="True"  />
                            <Selecting AllowRowSelect="True"  />
                        <%--<ClientEvents OnRowSelected="OnDetailRowSelected" />--%>
                        <%--<ClientEvents OnCommand="RadGrid1_Command"></ClientEvents>--%>
                        </ClientSettings>
                        <MasterTableView CommandItemDisplay="TopAndBottom" DataKeyNames="ItemCode" AllowMultiColumnSorting="false" ClientDataKeyNames="ItemCode" ShowFooter="true" Name="DetailTbl" EnableViewState="false" >
                            <CommandItemSettings ShowAddNewRecordButton="false" ShowCancelChangesButton="false" ShowExportToCsvButton ="false" ShowExportToExcelButton ="false" ShowExportToPdfButton ="false" 
                                                 ShowExportToWordButton ="false" ShowSaveChangesButton ="false" ShowRefreshButton="false" />
                            <SortExpressions>
                                <telerik:GridSortExpression FieldName="ItemCode" SortOrder="Ascending" />
                            </SortExpressions>
                            <Columns>
                                <telerik:GridBoundColumn HeaderText="Item Code" DataField="ItemCode" SortExpression="ItemCode" UniqueName="ItemCode" Groupable="False" AllowFiltering="false" Visible="True" FilterControlWidth="60%" >
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="Item Name" DataField="ItemName" SortExpression="ItemName" UniqueName="ItemName" Groupable="false" AllowFiltering="false" Visible="True" FilterControlWidth="60%" >
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="40%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="40%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="UOM" DataField="UOMName" SortExpression="UOMName" UniqueName="UOMName" Groupable="false"  AllowFiltering="false" Visible="True"  FilterControlWidth="90%">
                                    <ItemStyle HorizontalAlign="Left" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="Order Qty" DataField="OrderQty" SortExpression="OrderQty" UniqueName="OrderQty" Groupable="false"  AllowFiltering="false" Visible="True"  FilterControlWidth="70%" DataFormatString="{0:###0.00}">
                                    <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridBoundColumn HeaderText="Rate" DataField="Rate" SortExpression="Rate" UniqueName="Rate" Groupable="false"  AllowFiltering="false" Visible="True"  FilterControlWidth="70%" DataFormatString="{0:###0.00}">
                                    <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridBoundColumn>
                                <telerik:GridCalculatedColumn HeaderText="Amount" UniqueName="Amount" DataType="System.Double" DataFields="OrderQty, Rate" Expression="{0}*{1}" FooterText="Total : " Aggregate="Sum" DataFormatString="{0:###0.00}" AllowFiltering="false" >
                                    <ItemStyle HorizontalAlign="Right" VerticalAlign="Top" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="10%"  />
                                    <FooterStyle  HorizontalAlign="Right" VerticalAlign="Middle" Width="10%" />
                                </telerik:GridCalculatedColumn>
                                <telerik:GridTemplateColumn HeaderText="Status" DataField ="IsActive" UniqueName="IsActive" Groupable="false" AllowSorting="false" AllowFiltering="false" Visible="true" >
                                    <ItemTemplate>
                                    <%# Boolean.Parse(Eval("IsActive").ToString()) ? "<font color='#006600'><b> Active</b></font>" : "<font color='#990000'><b>Inactive</b></font>" %>
                                    </ItemTemplate>
                                    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="10%"  />
                                </telerik:GridTemplateColumn>
                            <%--<telerik:GridButtonColumn CommandName="Delete" Text="Deactivate" UniqueName="column" ButtonType="ImageButton" ConfirmText="Are you Sure ?" ConfirmTitle="Confirm" ShowSortIcon="False">
                            </telerik:GridButtonColumn>--%>
                            </Columns>
                            <CommandItemStyle HorizontalAlign="Left" />
                        </MasterTableView>
                        <PagerStyle Mode="NextPrevNumericAndAdvanced"  />
                        <FilterMenu CssClass="cssForFilterButton">
                        </FilterMenu>
                        <CommandItemStyle HorizontalAlign="Left" />
                        <FilterItemStyle HorizontalAlign="Left" />
                        <GroupingSettings ShowUnGroupButton = "false" />
                    </telerik:RadGrid>
                    </div>
                    <br />
                </fieldset>
                <div class="clearfix"></div>
                <br />
            </div>
            <div class="clearfix"></div>
            <br />
            <div class="col-md-16">
                <fieldset class="border-for-div text-align-Left">
                    <legend class="caption-for-div">&nbsp;Action&nbsp;</legend>
                    <telerik:RadButton ID="btnAddBottom" runat="server" Text="Add" RenderMode="Lightweight" ToolTip="Add SO" OnClick="btnAddTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbAdd" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnEditBottom" runat="server" Text="Edit" RenderMode="Lightweight" ToolTip="Edit SO"  OnClick="btnEditTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbEdit" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnSaveBottom" runat="server" Text="Save" RenderMode="Lightweight" ToolTip="Save/Update SO" OnClick="btnSaveTop_Click" OnClientClicking="SaveConfirm">
                        <Icon PrimaryIconCssClass="rbSave" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnAbortBottom" runat="server" Text="Abort" RenderMode="Auto" ToolTip="Abort" OnClick="btnAbortTop_Click"  OnClientClicking="SaveConfirm" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbCancel" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                    <telerik:RadButton ID="btnRefreshBottom" runat="server" Text="Refresh" RenderMode="Auto" ToolTip="Refresh" OnClick="btnRefreshTop_Click" CausesValidation="False">
                        <Icon PrimaryIconCssClass="rbRefresh" PrimaryIconLeft="5" PrimaryIconTop="5"></Icon>
                    </telerik:RadButton>
                </fieldset>
            </div>
            <div class="clearfix"></div>
            <br />

        </div>
    </fieldset>
    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
        <script type="text/javascript">

            function SaveConfirm(sender, args) {
                args.set_cancel(!window.confirm("Are you sure ?"));
            }

            function OnRowSelected(sender, args) {
                var SoId = args.getDataKeyValue("SalesOrderId");
                var hdnControl = document.getElementById('<%= hdnSalesOrderId.ClientID%>');
                hdnControl.value = SoId;
                //alert(hdnControl.value);
            }

            function ItemCodeClientValidate(source, arguments) {
                var exists;
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "SalesOrderEntry.aspx/ValidateItemInDatabaseServerSide",
                    data: "{'strValue': '" + arguments.Value + "'}",
                    dataType: "json",
                    async: false,
                    success: function (result) {
                        exists = result.d;
                    }
                });
                arguments.IsValid = exists;
            }

            

        </script>
    </telerik:RadScriptBlock>

</asp:Content>

Sales Order page cs - 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using MTIPLSQLCommonClass;
using System.Globalization;

namespace ErpWebApplication.TransactionData
{
    public partial class SalesOrderEntry : System.Web.UI.Page
    {

        #region library class instances

        clsSQLCommonLib objFunLib = new clsSQLCommonLib();

        #endregion

        #region Variable declaration

        int intVirtualRowCount = 0, intVirtualRowCount1 = 0, intVirtualRowCount2 = 0, intDtlTblCurrentPageIndex = 0;
        const int ItemsPerRequest = 10;

        #endregion

        #region static variables for radgrid

        string strSalesOrderId;
        static string strSortOrder = null;
        static string strRadGridFilter = null;
        static int intPageIndex = 1, intDtlPageIndex = 1;
        static List<ClsFilterCriteria> objClsFilterCriteria = new List<ClsFilterCriteria>();

        #endregion


        protected void Page_Load(object sender, EventArgs e)
        {
            this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "Global", this.ResolveClientUrl("~/Include/javaFunctionLib.js"));

            System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
            DateTimeFormatInfo dtf = new System.Globalization.DateTimeFormatInfo();
            dtf.ShortDatePattern = "dd/MM/yyyy";
            ci.DateTimeFormat = dtf;
            System.Threading.Thread.CurrentThread.CurrentCulture = ci;

            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            HttpContext.Current.Response.Cache.SetNoServerCaching();
            HttpContext.Current.Response.Cache.SetNoStore();

            Response.AddHeader("Refresh", Convert.ToString((Session.Timeout * 60) + 10) + "; url=" + ResolveServerUrl("~/login/frmLogin.aspx"));

            RadInputManager mpRadInputManager;

            mpRadInputManager = (RadInputManager)Master.FindControl("RadInputManager1");
            if (mpRadInputManager != null)
            {
                DateInputSetting dateTextBoxSetting = (DateInputSetting)mpRadInputManager.GetSettingByBehaviorID("BIDateInput");
                //dateTextBoxSetting.TargetControls.Add(new TargetInput(TxtOrderDate.UniqueID, true));
                TextBoxSetting txtBoxSetting = (TextBoxSetting)mpRadInputManager.GetSettingByBehaviorID("BINotEmpty");
                //txtBoxSetting.TargetControls.Add(new TargetInput(TxtVyasaRefNo.UniqueID, true));
                //txtBoxSetting.TargetControls.Add(new TargetInput(TxtCustomerOrderNo.UniqueID, true));
            }

            if (!IsPostBack)
            {
                strSortOrder = null;
                strRadGridFilter = null;
                intPageIndex = 1;
                objClsFilterCriteria = new List<ClsFilterCriteria>();

                DivDataForm.Attributes["style"] = "Display:None;";
                DivDataDisplayInGrid.Attributes["style"] = "Display:Normal;";
                btnAddTop.Enabled = true;
                btnAddBottom.Enabled = true;
                btnEditTop.Enabled = true;
                btnEditBottom.Enabled = true;
                btnSaveTop.Enabled = false;
                btnSaveBottom.Enabled = false;
                btnAbortTop.Enabled = false;
                btnAbortBottom.Enabled = false;
                btnRefreshTop.Enabled = true;
                btnRefreshBottom.Enabled = true;

                ClsFilterCriteria TempClsFilter;
                TempClsFilter = new ClsFilterCriteria();

                TempClsFilter.ColumnName = "SalesOrderId";
                TempClsFilter.FilterCriteria = null;
                objClsFilterCriteria.Add(TempClsFilter);
                TempClsFilter = new ClsFilterCriteria();
                TempClsFilter.ColumnName = "SalesOrderDate";
                TempClsFilter.FilterCriteria = null;
                objClsFilterCriteria.Add(TempClsFilter);
                TempClsFilter = new ClsFilterCriteria();

                foreach (GridSortExpression exp in RadGridSalesOrder.MasterTableView.SortExpressions)
                {
                    if (strSortOrder == "" | String.IsNullOrEmpty(strSortOrder))
                    {
                        strSortOrder = exp.ToString();
                    }
                    else
                    {
                        strSortOrder = strSortOrder + ", " + exp.ToString();
                    }
                }

                //RadGridSalesOrder.Rebind();
            }
            else
            {
                if (hdnVisibleDiv.Value == "DivDataForm")
                {
                    DivDataForm.Attributes["style"] = "Display:Normal;";
                    DivGrid.Attributes["style"] = "Display:None;";
                    btnRefreshTop.Enabled = false;
                    btnRefreshBottom.Enabled = false;

                }
                else
                {
                    DivDataForm.Attributes["style"] = "Display:None;";
                    DivGrid.Attributes["style"] = "Display:Normal;";
                    btnRefreshTop.Enabled = true;
                    btnRefreshBottom.Enabled = true;

                }
            }
        }


        public static string ResolveServerUrl(string serverUrl, bool forceHttps)
        {
            // *** Is it already an absolute Url?
            if (serverUrl.IndexOf("://") > -1)
                return serverUrl;

            // *** Start by fixing up the Url an Application relative Url
            string newUrl = System.Web.VirtualPathUtility.ToAbsolute(serverUrl); //ResolveServerUrl(serverUrl);
            Uri originalUri = HttpContext.Current.Request.Url;
            newUrl = (forceHttps ? "https" : originalUri.Scheme) +
                     "://" + originalUri.Authority + newUrl;

            return newUrl;
        }

        public static string ResolveServerUrl(string serverUrl)
        {
            return ResolveServerUrl(serverUrl, false);
        }

        #region button events

        //Same event is used for save buttom based at bottom
        protected void btnSaveTop_Click(object sender, EventArgs e) //Same event is used for save buttom based at bottom
        {
            if (!Page.IsValid)
            {
                DivMessage.Attributes["class"] = "error rounded-corners";
                LblMessage.Text = "Data validation failed";
                ClientScript.RegisterStartupScript(this.GetType(), "HideLabel", "<script type=\"text/javascript\">setTimeout(\"document.getElementById('" + DivMessage.ClientID + "').style.display='none'\",20000)</script>");
                DivDataForm.Attributes["style"] = "Display:Normal;";
                DivGrid.Attributes["style"] = "Display:None;";
                btnAddTop.Enabled = false;
                btnAddBottom.Enabled = false;
                btnEditTop.Enabled = false;
                btnEditBottom.Enabled = false;
                btnSaveTop.Enabled = true;
                btnSaveBottom.Enabled = true;
                btnAbortTop.Enabled = true;
                btnAbortBottom.Enabled = true;
                hdnVisibleDiv.Value = "DivDataForm";
                btnRefreshTop.Enabled = false;
                btnRefreshBottom.Enabled = false;
                return;
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "HideLabel", "<script type=\"text/javascript\">setTimeout(\"document.getElementById('" + DivMessage.ClientID + "').style.display='none'\",20000)</script>");
                DivDataForm.Attributes["style"] = "Display:None;";
                DivGrid.Attributes["style"] = "Display:Normal;";
                btnAddTop.Enabled = true;
                btnAddBottom.Enabled = true;
                btnEditTop.Enabled = true;
                btnEditBottom.Enabled = true;
                btnSaveTop.Enabled = false;
                btnSaveBottom.Enabled = false;
                btnAbortTop.Enabled = false;
                btnAbortBottom.Enabled = false;
                hdnVisibleDiv.Value = "DivGrid";
                btnRefreshTop.Enabled = true;
                btnRefreshBottom.Enabled = true;
                RadGridSalesOrder.DataSource = null;
                RadGridSalesOrder.Rebind();
            }
            //            btnAddTop_Click(sender, e);
        }

        //Same event is used for Add buttom based at bottom
        protected void btnAddTop_Click(object sender, EventArgs e)
        {
            DivDataForm.Attributes["style"] = "Display:Normal;";
            DivGrid.Attributes["style"] = "Display:None;";
            btnAddTop.Enabled = false;
            btnAddBottom.Enabled = false;
            btnEditTop.Enabled = false;
            btnEditBottom.Enabled = false;
            btnSaveTop.Enabled = true;
            btnSaveBottom.Enabled = true;
            btnAbortTop.Enabled = true;
            btnAbortBottom.Enabled = true;
            hdnVisibleDiv.Value = "DivDataForm";
            btnRefreshTop.Enabled = false;
            btnRefreshBottom.Enabled = false;

            hdnSalesOrderId.Value = "0";
            //TxtRegionName.Text = String.Empty;
        }

        //Same event is used for edit buttom based at bottom
        protected void btnEditTop_Click(object sender, EventArgs e)
        {
            DivDataForm.Attributes["style"] = "Display:Normal;";
            DivGrid.Attributes["style"] = "Display:None;";
            btnAddTop.Enabled = false;
            btnAddBottom.Enabled = false;
            btnEditTop.Enabled = false;
            btnEditBottom.Enabled = false;
            btnSaveTop.Enabled = true;
            btnSaveBottom.Enabled = true;
            btnAbortTop.Enabled = true;
            btnAbortBottom.Enabled = true;
            hdnVisibleDiv.Value = "DivDataForm";
            btnRefreshTop.Enabled = false;
            btnRefreshBottom.Enabled = false;


            


        }

        //Same event is used for abort buttom based at bottom
        protected void btnAbortTop_Click(object sender, EventArgs e)
        {
            DivDataForm.Attributes["style"] = "Display:None;";
            DivGrid.Attributes["style"] = "Display:Normal;";
            btnAddTop.Enabled = true;
            btnAddBottom.Enabled = true;
            btnEditTop.Enabled = true;
            btnEditBottom.Enabled = true;
            btnSaveTop.Enabled = false;
            btnSaveBottom.Enabled = false;
            btnAbortTop.Enabled = false;
            btnAbortBottom.Enabled = false;
            hdnVisibleDiv.Value = "DivGrid";
            btnRefreshTop.Enabled = true;
            btnRefreshBottom.Enabled = true;
        }

        //Same event is used for abort buttom based at bottom
        protected void btnRefreshTop_Click(object sender, EventArgs e)
        {
            RadGridSalesOrder.Rebind();
            btnAddTop.Enabled = true;
            btnAddBottom.Enabled = true;
            btnEditTop.Enabled = true;
            btnEditBottom.Enabled = true;
            btnSaveTop.Enabled = false;
            btnSaveBottom.Enabled = false;
            btnAbortTop.Enabled = false;
            btnAbortBottom.Enabled = false;
            btnRefreshTop.Enabled = true;
            btnRefreshBottom.Enabled = true;
        }

        #endregion

        #region validation rules

        protected void ValidateForNotBlank(object source, ServerValidateEventArgs e)
        {
            if (e.Value.Length == 0)
                e.IsValid = false;
            else
                e.IsValid = true;
        }

        #endregion

        #region radgrid events

        protected void RadGridSalesOrder_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            if (!e.IsFromDetailTable)
            {
                RadGridSalesOrder.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderMaster INNER JOIN PartyMaster ON SalesOrderMaster.PartyId = PartyMaster.PartyId", intPageIndex, RadGridSalesOrder.PageSize, "SalesOrderMaster.SalesOrderId, SalesOrderMaster.SalesOrderDate, PartyMaster.PartyName, SalesOrderMaster.PartyRefPONo, SalesOrderMaster.PartyRefPODate, SalesOrderMaster.IsActive", strSortOrder, strRadGridFilter, ref intVirtualRowCount);
                RadGridSalesOrder.MasterTableView.VirtualItemCount = intVirtualRowCount;
            }

        }

        protected void RadGridSalesOrder_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
        {
            GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
            switch (e.DetailTableView.Name)
            {
                case "OrderDetail":
                    {
                        intDtlPageIndex = e.DetailTableView.CurrentPageIndex + 1;
                        strSalesOrderId = dataItem.GetDataKeyValue("SalesOrderId").ToString();
                        e.DetailTableView.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderDetail INNER JOIN ItemMaster ON SalesOrderDetail.ItemCode = ItemMaster.ItemCode", intDtlPageIndex, RadGridSalesOrder.PageSize, "SalesOrderDetail.ItemCode, ItemMaster.ItemName, SalesOrderDetail.OrderQty, SalesOrderDetail.Rate, SalesOrderDetail.IsActive", strSortOrder, " SalesOrderDetail.SalesOrderId = '" + strSalesOrderId + "'", ref intVirtualRowCount1);
                        e.DetailTableView.CurrentPageIndex = intPageIndex - 1;
                        e.DetailTableView.VirtualItemCount = intVirtualRowCount1;
                        //e.DetailTableView.DataSource = objFunLib.ReturnDataTable("select SalesOrderDetail.ItemCode, ItemMaster.ItemName, SalesOrderDetail.OrderQty, SalesOrderDetail.Rate, SalesOrderDetail.IsActive from SalesOrderDetail INNER JOIN ItemMaster ON SalesOrderDetail.ItemCode = ItemMaster.ItemCode where SalesOrderDetail.SalesOrderId = '" + strSalesOrderId + "'", "tblData");
                        break;
                    }

                //case "Order":
                //    {
                //        //string OrderID = dataItem.GetDataKeyValue("OrderID").ToString();
                //        //e.DetailTableView.DataSource = GetDataTable("SELECT * FROM [Order Details] WHERE OrderID = " + OrderID);
                //        break;
                //    }
            }
        }

        protected void RadGridSalesOrder_PageIndexChanged(object sender, GridPageChangedEventArgs e)
        {
            if (e.Item.OwnerTableView.Name == "OrderDetail")
            {
                intDtlPageIndex = e.NewPageIndex + 1;
                RadGridSalesOrder.MasterTableView.DetailTables[0].DataSource = null;
                RadGridSalesOrder.MasterTableView.DetailTables[0].Rebind();
            }
            else
            {
                intPageIndex = e.NewPageIndex + 1;
                RadGridSalesOrder.DataSource = null;
                RadGridSalesOrder.Rebind();
            }
        }

        protected void RadGridSalesOrder_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
        {
            intPageIndex = 1;
        }

        protected void RadGridSalesOrder_ItemCommand(object sender, GridCommandEventArgs e)
        {
            string strFilter = "";
           
            if ((e.CommandName == RadGrid.FilterCommandName))
            {
                DataTable objDt;
                Pair filterPair = (Pair)e.CommandArgument;
                e.Canceled = true;
                foreach (ClsFilterCriteria obb in objClsFilterCriteria)
                {
                    if (obb.ColumnName.ToUpper() == filterPair.Second.ToString().ToUpper())
                    {
                        TextBox filterBox = (e.Item as GridFilteringItem)[filterPair.Second.ToString()].Controls[0] as TextBox;
                        obb.FilterCriteria = objFunLib.GetFilterCriteria(filterPair.First.ToString(), filterBox.Text) == "" ? null : objFunLib.GetFilterCriteria(filterPair.First.ToString(), filterBox.Text);
                        if (obb.FilterCriteria == null)
                        {
                            foreach (GridColumn column in RadGridSalesOrder.MasterTableView.RenderColumns)
                            {
                                if (column.SupportsFiltering())
                                {
                                    if (filterPair.Second.ToString().ToUpper() == column.UniqueName.ToString().ToUpper())
                                    {
                                        column.CurrentFilterValue = string.Empty;
                                    }
                                }
                            }
                        }
                    }
                }
                foreach (ClsFilterCriteria obb in objClsFilterCriteria)
                {
                    if (obb.FilterCriteria != null & obb.FilterCriteria != "")
                    {
                        if (strFilter == "")
                        {
                            strFilter = obb.ColumnName + " " + obb.FilterCriteria;
                        }
                        else
                        {
                            strFilter = strFilter + " And " + obb.ColumnName + " " + obb.FilterCriteria + " ";
                        }
                    }
                }
                strRadGridFilter = strFilter;
                intPageIndex = 1;
                //RadGridSalesOrder.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("RegionMaster", intPageIndex, RadGridSalesOrder.PageSize, "RegionId, RegionName, IsActive", strSortOrder, strRadGridFilter, ref intVirtualRowCount);
                RadGridSalesOrder.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderMaster INNER JOIN PartyMaster ON SalesOrderMaster.PartyId = PartyMaster.PartyId", intPageIndex, RadGridSalesOrder.PageSize, "SalesOrderMaster.SalesOrderId, SalesOrderMaster.SalesOrderDate, PartyMaster.PartyName, SalesOrderMaster.PartyRefPONo, SalesOrderMaster.PartyRefPODate, SalesOrderMaster.IsActive", strSortOrder, strRadGridFilter, ref intVirtualRowCount);
                RadGridSalesOrder.MasterTableView.VirtualItemCount = intVirtualRowCount;
                RadGridSalesOrder.Rebind();
            }
            DivDataForm.Attributes["style"] = "Display:None;";
            DivGrid.Attributes["style"] = "Display:Normal;";
            btnAddTop.Enabled = true;
            btnAddBottom.Enabled = true;
            btnEditTop.Enabled = true;
            btnEditBottom.Enabled = true;
            btnSaveTop.Enabled = false;
            btnSaveBottom.Enabled = false;
            btnAbortTop.Enabled = false;
            btnAbortBottom.Enabled = false;
            hdnVisibleDiv.Value = "DivGrid";
            btnRefreshTop.Enabled = true;
            btnRefreshBottom.Enabled = true;

        }

        protected void RadGridSalesOrder_SortCommand(object sender, GridSortCommandEventArgs e)
        {
            int intLoc = 0;
            GridTableView tableView = e.Item.OwnerTableView;
            e.Canceled = true;
            GridSortExpression expression = new GridSortExpression();
            if (expression.SortOrder != GridSortOrder.None)
            {
                expression.FieldName = e.SortExpression;
                if (RadGridSalesOrder.MasterTableView.SortExpressions.ContainsExpression(e.SortExpression))
                {
                    intLoc = RadGridSalesOrder.MasterTableView.SortExpressions.IndexOf(expression) < 0 ? 0 : RadGridSalesOrder.MasterTableView.SortExpressions.IndexOf(expression);
                }

                if (RadGridSalesOrder.MasterTableView.SortExpressions.Count == 0 || RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].FieldName != e.SortExpression)
                {
                    expression.SortOrder = GridSortOrder.Descending;
                }
                else if (RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].SortOrder == GridSortOrder.Descending)
                {
                    expression.SortOrder = GridSortOrder.Ascending;
                }
                else if (RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].SortOrder == GridSortOrder.Ascending)
                {
                    expression.SortOrder = GridSortOrder.None;
                }
                else if (RadGridSalesOrder.MasterTableView.SortExpressions[intLoc].SortOrder == GridSortOrder.None)
                {
                    expression.SortOrder = GridSortOrder.Descending;
                }
                if (string.IsNullOrEmpty(strSortOrder) == false)
                {
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "ASC,", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "DESC,", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "ASC", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " " + "DESC", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + ", ", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression + " ", "");
                    strSortOrder = strSortOrder.Replace(e.SortExpression, "");
                    strSortOrder = strSortOrder.Trim();
                }

                if (strSortOrder == "" | String.IsNullOrEmpty(strSortOrder))
                {
                    if (expression.SortOrder == GridSortOrder.None)
                    {
                        strSortOrder = expression.ToString() + "ASC";
                    }
                    else
                    {
                        strSortOrder = expression.ToString();
                    }
                }
                else
                {
                    if (strSortOrder.Substring(0, 1) == ",")
                    {
                        strSortOrder = strSortOrder.Substring(1, strSortOrder.Trim().Length - 1);
                    }
                    if (strSortOrder.Substring(strSortOrder.Trim().Length - 1, 1) == ",")
                    {
                        strSortOrder = strSortOrder.Substring(0, strSortOrder.Trim().Length - 1);
                    }
                    if (expression.SortOrder != GridSortOrder.None)
                    {
                        strSortOrder = strSortOrder + ", " + expression.ToString();
                    }
                }
                RadGridSalesOrder.MasterTableView.SortExpressions.AddSortExpression(expression);
                DivDataForm.Attributes["style"] = "Display:None;";
                DivGrid.Attributes["style"] = "Display:Normal;";
                btnAddTop.Enabled = true;
                btnAddBottom.Enabled = true;
                btnEditTop.Enabled = true;
                btnEditBottom.Enabled = true;
                btnSaveTop.Enabled = false;
                btnSaveBottom.Enabled = false;
                btnAbortTop.Enabled = false;
                btnAbortBottom.Enabled = false;
                hdnVisibleDiv.Value = "DivGrid";
                btnRefreshTop.Enabled = true;
                btnRefreshBottom.Enabled = true;
                RadGridSalesOrder.DataSource = null;
                RadGridSalesOrder.Rebind();
            }
        }

        #endregion

        #region web methods and related functions

        private static string GetStatusMessage(int offset, int total)
        {
            if (total <= 0)
                return "No matches";

            return String.Format("<b>1</b>-<b>{0}</b> out of <b>{1}</b>", offset, total);
        }

        [WebMethod]
        public static RadComboBoxData GetPartyComboBoxResults(RadComboBoxContext context)
        {
            DataTable data = GetPartyComboBoxData(context.Text);

            RadComboBoxData comboData = new RadComboBoxData();
            int itemOffset = context.NumberOfItems;
            int endOffset = Math.Min(itemOffset + ItemsPerRequest, data.Rows.Count);
            comboData.EndOfItems = endOffset == data.Rows.Count;

            List<RadComboBoxItemData> result = new List<RadComboBoxItemData>(endOffset - itemOffset);

            for (int i = itemOffset; i < endOffset; i++)
            {
                RadComboBoxItemData itemData = new RadComboBoxItemData();
                itemData.Text = data.Rows[i]["PartyName"].ToString();
                itemData.Value = data.Rows[i]["PartyId"].ToString();

                result.Add(itemData);
            }
            comboData.Message = GetStatusMessage(endOffset, data.Rows.Count);

            comboData.Items = result.ToArray();
            return comboData;
        }

        private static DataTable GetPartyComboBoxData(string filterString)
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
            //SqlCommand command = new SqlCommand("sp_PartyTypeMasterComboBox");
            //command.CommandType = CommandType.StoredProcedure;
            //command.Parameters.Add(new SqlParameter("@para1", filterString) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            //command.Parameters.Add(new SqlParameter("@para2", HttpContext.Current.Request.Cookies["RefCompanyId"].Value.ToString()) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });

            //objFunLib.FetchDataInReaderUsingSP("PopulateComboBox", "DepartmentMaster", "DepartmentName, DepartmentId", "DepartmentName", "RefCompanyId = " + Request.Cookies["RefCompanyId"].Value + " and IsActive = 1", ref objReader);
            SqlCommand command = new SqlCommand("PopulateComboBox");
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@para1", "PartyMaster") { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@para2", "PartyName, PartyId") { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@para3", "PartyName") { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            if (filterString == null | filterString == "")
            {
                command.Parameters.Add(new SqlParameter("@para4", "RefCompanyId = " + HttpContext.Current.Request.Cookies["RefCompanyId"].Value.ToString()) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            }
            else
            {
                command.Parameters.Add(new SqlParameter("@para4", "RefCompanyId = " + HttpContext.Current.Request.Cookies["RefCompanyId"].Value.ToString() + " and PartyName Like '%" + filterString + "%'") { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            }
            command.Connection = connection;
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataTable data = new DataTable();
            adapter.Fill(data);
            return data;
        }

        #endregion

        #region validation rules

        protected void PartyServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = ValidatePartyInDatabaseServerSide(args.Value);
        }

        protected void ItemCodeServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = ValidateItemInDatabaseServerSide(args.Value);
        }

        #endregion

        #region static methods

         [WebMethod()]
        public static string ToUpper(string data)
        {
            return data.ToUpper();
        }

        [WebMethod()]
        [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
        public static bool ValidatePartyInDatabaseServerSide(string strValue) //object source, ServerValidateEventArgs args 
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
            SqlDataReader objReader;
            Boolean blHasRows;
            //SqlCommand command = new SqlCommand("SELECT CompanyMaster.CompanyName as CompanyName, CompanyMaster.CompanyId FROM CompanyMaster where CompanyMaster.CompanyName like '%' + @para1 + '%' order by CompanyMaster.CompanyName");
            //command.Parameters.AddWithValue("@para1", filterString.Replace("%", "[%]").Replace("_", "[_]"));
            SqlCommand command = new SqlCommand("select * from PartyMaster where PartyName = '" + strValue + "'");
            command.CommandType = CommandType.Text;
            //command.Parameters.Add(new SqlParameter("@para1", strValue) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            connection.Open();
            command.Connection = connection;
            objReader = command.ExecuteReader(CommandBehavior.CloseConnection);
            blHasRows = objReader.HasRows;
            objReader.Close();
            //connection.Close();
            return blHasRows;
        }


        protected void SoServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = ValidateSoInDatabaseServerSide(args.Value);
        }

        [WebMethod()]
        [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
        public static bool ValidateSoInDatabaseServerSide(string strValue) //object source, ServerValidateEventArgs args 
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
            SqlDataReader objReader;
            Boolean blHasRows;
            //SqlCommand command = new SqlCommand("SELECT CompanyMaster.CompanyName as CompanyName, CompanyMaster.CompanyId FROM CompanyMaster where CompanyMaster.CompanyName like '%' + @para1 + '%' order by CompanyMaster.CompanyName");
            //command.Parameters.AddWithValue("@para1", filterString.Replace("%", "[%]").Replace("_", "[_]"));
            SqlCommand command = new SqlCommand("select * from SalesOrderMaster where SalesOrderId = '" + strValue + "'");
            command.CommandType = CommandType.Text;
            //command.Parameters.Add(new SqlParameter("@para1", strValue) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            connection.Open();
            command.Connection = connection;
            objReader = command.ExecuteReader(CommandBehavior.CloseConnection);
            blHasRows = !objReader.HasRows;
            objReader.Close();
            //connection.Close();
            return blHasRows;
        }

        [WebMethod()]
        [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
        public static bool ValidateItemInDatabaseServerSide(string strValue) //object source, ServerValidateEventArgs args 
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
            SqlDataReader objReader;
            Boolean blHasRows;
            //SqlCommand command = new SqlCommand("SELECT CompanyMaster.CompanyName as CompanyName, CompanyMaster.CompanyId FROM CompanyMaster where CompanyMaster.CompanyName like '%' + @para1 + '%' order by CompanyMaster.CompanyName");
            //command.Parameters.AddWithValue("@para1", filterString.Replace("%", "[%]").Replace("_", "[_]"));
            SqlCommand command = new SqlCommand("select * from ItemMaster where Itemcode = '" + strValue + "'");
            command.CommandType = CommandType.Text;
            //command.Parameters.Add(new SqlParameter("@para1", strValue) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            connection.Open();
            command.Connection = connection;
            objReader = command.ExecuteReader(CommandBehavior.CloseConnection);
            blHasRows = objReader.HasRows;
            objReader.Close();
            //connection.Close();
            return blHasRows;
        }
        #endregion

        protected void RadGridOrderDetail_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            RadGridOrderDetail.DataSource = objFunLib.GetDataTableForRadgridCustomPaging("SalesOrderDetail INNER JOIN ItemMaster ON SalesOrderDetail.ItemCode = ItemMaster.ItemCode INNER JOIN UOMMaster ON SalesOrderDetail.UOMId = UOMMaster.UOMId", intDtlPageIndex, RadGridOrderDetail.PageSize, "SalesOrderDetail.ItemCode, ItemMaster.ItemName, UOMMaster.UOMName, SalesOrderDetail.OrderQty, SalesOrderDetail.Rate, SalesOrderDetail.IsActive", "Id Desc", "", ref intVirtualRowCount);
            RadGridOrderDetail.VirtualItemCount = intVirtualRowCount;
        }

        protected void RadGridOrderDetail_PageIndexChanged(object sender, GridPageChangedEventArgs e)
        {
            intDtlPageIndex = e.NewPageIndex + 1;
            RadGridOrderDetail.DataSource = null;
            RadGridOrderDetail.Rebind();
        }

        protected void RadGridOrderDetail_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
        {
            intDtlPageIndex = 1;
        }
    }
}

MTIPLSqlCommandClass library- 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
//using System.Linq;
//using System.Collections;
//using System.Collections.Generic;
//using System.Web;
//using System.Web.Security;
//using System.Web.UI;
//using System.Web.UI.WebControls;
//using System.Web.UI.WebControls.WebParts;
//using System.Web.UI.HtmlControls;
using System.Data.Common;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
//using Telerik.Web.UI;
//using System.IO;
using System.Data.SqlClient;

//using System.Configuration;

namespace MTIPLSQLCommonClass
{
    #region emptyClass
    
    public class MTIPLSQLCommonClass
    {
    }
    
    #endregion
    
    #region GeneralClassStaticFunctionLibraryForSQL
    
    public static class clsStaticSqlCommonLib
    {
        public static List<T> DataTableToList<T>(this DataTable table) where T : class, new()
        {
            try
            {
                List<T> list = new List<T>();
                
                foreach (var row in table.AsEnumerable())
                {
                    T obj = new T();
                    
                    foreach (var prop in obj.GetType().GetProperties())
                    {
                        try
                        {
                            PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name);
                            propertyInfo.SetValue(obj, Convert.ChangeType(row[prop.Name], propertyInfo.PropertyType), null);
                        }
                        catch
                        {
                            continue;
                        }
                    }
                    
                    list.Add(obj);
                }
                
                return list;
            }
            catch
            {
                return null;
            }
        }
        
        private static DataTable ListToDatatable<T>(List<T> data)
        {
            try
            {
                PropertyDescriptorCollection props =
                    TypeDescriptor.GetProperties(typeof(T));
                DataTable table = new DataTable();
                for (int i = 0; i < props.Count; i++)
                {
                    PropertyDescriptor prop = props[i];
                    if (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
                        table.Columns.Add(prop.Name, prop.PropertyType.GetGenericArguments()[0]);
                    else
                        table.Columns.Add(prop.Name, prop.PropertyType);
                }
                object[] values = new object[props.Count];
                foreach (T item in data)
                {
                    for (int i = 0; i < values.Length; i++)
                    {
                        values[i] = props[i].GetValue(item);
                    }
                    table.Rows.Add(values);
                }
                return table;
            }
            catch
            {
                return null;
            }
        }
    }
    
    #endregion
    
    #region GeneralClassFunctionLibraryForSQL
    
    public class clsSQLCommonLib
    {
        public SqlConnection objConRead, objConWrite;
        public SqlDataAdapter objDAdpt;
        public DataSet objDs;
        public SqlCommand objCmd;
        public DataTable objDTSpParameters;
        public DataRow objDr;
        public SqlDataReader objReader;
        public SqlTransaction objTrans;
        
        //Following properties are used in SaveData function to trap the values returned by SPs 
        public int CodeReturnedBySp { get; set; }
        
        public string MessageReturnedBySp { get; set; }
        
        //public int AffectedNoOfRowsReturnedBySp { get; set; }
        
        public string ReturnValue { get; set; }
        
        ////////////////////////
        
        //Function to create Connection Object
        public clsSQLCommonLib()
        {
            //objConRead = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConString"].ToString());
            //objConWrite = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConString"].ToString());
            //            objConRead = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConString"].ToString());
            //            objConWrite = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConString"].ToString());
            objConRead = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConString"].ToString());
            objConWrite = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConString"].ToString());
        }
        
        //Function to open Connection
        public void OpenReadConnection()
        {
            if ((objConRead.State == ConnectionState.Closed) || (objConRead.State == ConnectionState.Broken))
            {
                objConRead.Open();
            }
        }
        
        public void OpenWriteConnection()
        {
            if ((objConWrite.State == ConnectionState.Closed) || (objConWrite.State == ConnectionState.Broken))
            {
                objConWrite.Open();
            }
        }
        
        //Function to close Connection
        public void CloseReadConnection()
        {
            if (objConRead.State == ConnectionState.Open)
            {
                objConRead.Close();
            }
        }
        
        public void CloseWriteConnection()
        {
            if (objConWrite.State == ConnectionState.Open)
            {
                objConWrite.Close();
            }
        }

        
        //This function will return a datatable from stored proc
        public DataTable ReturnDataTableUsingSP(string sp,string strTableName)
        {
            OpenReadConnection();

            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            objCmd.Connection = objConRead;
            SqlDataAdapter objDAdpt = new SqlDataAdapter(objCmd);
            objDs = new DataSet();
            objDAdpt.Fill(objDs, strTableName);
            CloseReadConnection();
            return objDs.Tables[strTableName];
        }

        //This function will return a datatable from stored proc
        public DataTable ReturnDataTableUsingSP(string sp, string strTableName, string p1)
        {
            OpenReadConnection();

            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            objCmd.Connection = objConRead;
            objCmd.Parameters.Add(p1);
            SqlDataAdapter objDAdpt = new SqlDataAdapter(objCmd);
            objDs = new DataSet();
            objDAdpt.Fill(objDs, strTableName);
            CloseReadConnection();
            return objDs.Tables[strTableName];
        }

        //This function will return a datatable from stored proc
        public DataTable ReturnDataTableUsingSP(string sp, string strTableName, string p1, string p2)
        {
            OpenReadConnection();

            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            objCmd.Connection = objConRead;
            objCmd.Parameters.Add(p1);
            objCmd.Parameters.Add(p2);
            SqlDataAdapter objDAdpt = new SqlDataAdapter(objCmd);
            objDs = new DataSet();
            objDAdpt.Fill(objDs, strTableName);
            CloseReadConnection();
            return objDs.Tables[strTableName];
        }
        
        //This function will return a datatable from stored proc
        public DataTable ReturnDataTableUsingSP(string sp, string strTableName, string p1, string p2, string p3)
        {
            OpenReadConnection();

            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            objCmd.Connection = objConRead;
            objCmd.Parameters.Add(p1);
            objCmd.Parameters.Add(p2);
            objCmd.Parameters.Add(p3);
            SqlDataAdapter objDAdpt = new SqlDataAdapter(objCmd);
            objDs = new DataSet();
            objDAdpt.Fill(objDs, strTableName);
            CloseReadConnection();
            return objDs.Tables[strTableName];
        }

        //This function will return a datatable for passed SQL Query
        public DataTable ReturnDataTable(string strQuery, string strTableName)
        {
            OpenReadConnection();
            //SqlConnection objConReadForTimer;
            //objConReadForTimer = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConString"].ToString());
            //if ((objConReadForTimer.State == ConnectionState.Closed) || (objConReadForTimer.State == ConnectionState.Broken))
            //{
            //    objConReadForTimer.Open();
            //}
            //objDAdpt = new SqlDataAdapter(strQuery,objConReadForTimer );// objConRead);
            objDAdpt = new SqlDataAdapter(strQuery, objConRead);
            objDs = new DataSet();
            objDAdpt.Fill(objDs, strTableName);
            CloseReadConnection();
            //objConReadForTimer.Close();
            return objDs.Tables[strTableName];
            //        CloseReadConnection();
        }
        
        //This function will return a true/false if the data exists in database
        public Boolean IsDataExist(string strQue)
        {
            Boolean blHasRows;
            OpenReadConnection();
            objCmd = new SqlCommand(strQue, objConRead);
            objReader = objCmd.ExecuteReader();
            blHasRows = objReader.HasRows;
            objReader.Close();
            CloseReadConnection();
            if (blHasRows)
            {
                return (true);
            }
            else
            {
                return (false);
            }
            //        CloseReadConnection();
        }
        
        //This function will return a perticular field data value
        public string ReturnFieldData(string strQue, Boolean blnNumericFlag)
        {
            OpenReadConnection();
            string strRtnValue;
            objCmd = new SqlCommand(strQue, objConRead);
            if (objCmd.ExecuteScalar() == DBNull.Value || objCmd.ExecuteScalar() == null)
            {
                if (blnNumericFlag == true)
                {
                    objCmd.Dispose();
                    CloseReadConnection();
                    return ("0");
                }
                else
                {
                    objCmd.Dispose();
                    CloseReadConnection();
                    return ("");
                }
            }
            else
            {
                if (blnNumericFlag == true)
                {
                    strRtnValue = Convert.ToString((objCmd.ExecuteScalar()).ToString());
                    objCmd.Dispose();
                    CloseReadConnection();
                    return (strRtnValue);
                }
                else
                {
                    strRtnValue = (string)(objCmd.ExecuteScalar()).ToString();
                    objCmd.Dispose();
                    CloseReadConnection();
                    return (strRtnValue);
                }
            }
        }
        
        //This function will return multiple field Data
        public void FetchDataInReader(string strQuery, ref SqlDataReader objReader)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(strQuery, objConRead);
            objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
            objCmd.Dispose();
        }

        public void FetchDataInReaderUsingSP(string spName, string strParam1, ref SqlDataReader objReader)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(spName, objConRead);
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.Parameters.Add(new SqlParameter("@para1", strParam1) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
            objCmd.Dispose();
        }

        public void FetchDataInReaderUsingSP(string spName, string strParam1, string strParam2, ref SqlDataReader objReader)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(spName, objConRead);
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.Parameters.Add(new SqlParameter("@para1", strParam1) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para2", strParam2) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
            objCmd.Dispose();
        }

        public void FetchDataInReaderUsingSP(string spName, string strParam1, string strParam2, string strParam3, ref SqlDataReader objReader)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(spName, objConRead);
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.Parameters.Add(new SqlParameter("@para1", strParam1) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para2", strParam2) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para3", strParam3) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
            objCmd.Dispose();
        }

        public void FetchDataInReaderUsingSP(string spName, string strParam1, string strParam2, string strParam3, string strParam4, ref SqlDataReader objReader)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(spName, objConRead);
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.Parameters.Add(new SqlParameter("@para1", strParam1) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para2", strParam2) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para3", strParam3) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para4", strParam4) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
            objCmd.Dispose();
        }

        public void FetchDataInReaderUsingSP(string spName, string strParam1, string strParam2, string strParam3, string strParam4, string strParam5, ref SqlDataReader objReader)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(spName, objConRead);
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.Parameters.Add(new SqlParameter("@para1", strParam1) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para2", strParam2) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para3", strParam3) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para4", strParam4) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objCmd.Parameters.Add(new SqlParameter("@para5", strParam5) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            objReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
            objCmd.Dispose();
        }

        //This function will return multiple field Data
        public static void GetDataForSearchBox(string strSP, string strParam1, ref DataTable objDtSearch)
        {
            SqlConnection ConRead = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConString"].ToString()); ;
            SqlCommand Cmd = new SqlCommand(strSP);
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Parameters.Add(new SqlParameter("@para1", strParam1) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            Cmd.Connection = ConRead;
            SqlDataAdapter adp = new SqlDataAdapter(Cmd);
            adp.Fill(objDtSearch);
            Cmd.Dispose();
        }

        ///<summary>
        /// Use ASC or DESC with sort Columns expression
        ///</summary>
        public DataTable GetDataTableForRadgridCustomPaging(string strTableName, int startIndex, int intPageSize, string strColumns, string sortExpressions, string filterExpressions, ref int intVirtualRowCount) //List<GridFilterExpression> filterExpressions
        {
            string strFilter = "", strSort = "";

            int counter = 0;
            List<DbParameter> parameters = new List<DbParameter>();

            if (!String.IsNullOrEmpty(filterExpressions))
            {
                strFilter = strFilter + " " + (String.Format(" {0}", filterExpressions));
            }
            else
            {
                strFilter = strFilter + " ";
            }

            if (!String.IsNullOrEmpty(sortExpressions))
            {
                strSort = strSort + " " + (String.Format(" {0}", sortExpressions));
            }
            else
            {
                strSort = strSort + " ";
            }

            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
            SqlCommand command = new SqlCommand("GetSelectedPageDataForGrid");
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@TableOrView", strTableName) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@SelectedPage", startIndex) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.Int });
            command.Parameters.Add(new SqlParameter("@PageSize", intPageSize) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.Int });
            command.Parameters.Add(new SqlParameter("@Columns", strColumns) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@OrderByColumn", strSort) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@WhereClause", strFilter) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@rowcnt", 0) { Direction = System.Data.ParameterDirection.Output, SqlDbType = System.Data.SqlDbType.Int });

            command.Connection = connection;
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataTable data = new DataTable();
            adapter.Fill(data);
            intVirtualRowCount = Convert.ToInt32(command.Parameters["@rowcnt"].Value);
            return data;

        }

        public void GetDataReaderForRadgridCustomPaging(string strTableName, int startIndex, int intPageSize, string strColumns, string sortExpressions, string filterExpressions, ref int intVirtualRowCount, ref SqlDataReader objDataReader) //List<GridFilterExpression> filterExpressions
        {
            string strFilter = "", strSort = "";

            int counter = 0;
            List<DbParameter> parameters = new List<DbParameter>();

            if (!String.IsNullOrEmpty(filterExpressions))
            {
                strFilter = strFilter + " " + (String.Format(" {0}", filterExpressions));
            }
            else
            {
                strFilter = strFilter + " ";
            }

            if (!String.IsNullOrEmpty(sortExpressions))
            {
                strSort = strSort + " " + (String.Format(" {0}", sortExpressions));
            }
            else
            {
                strSort = strSort + " ";
            }

            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString);
            connection.Open();
            SqlCommand command = new SqlCommand("GetSelectedPageDataForGrid", connection);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@TableOrView", strTableName) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@SelectedPage", startIndex) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.Int });
            command.Parameters.Add(new SqlParameter("@PageSize", intPageSize) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.Int });
            command.Parameters.Add(new SqlParameter("@Columns", strColumns) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@OrderByColumn", strSort) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@WhereClause", strFilter) { Direction = System.Data.ParameterDirection.Input, SqlDbType = System.Data.SqlDbType.NVarChar });
            command.Parameters.Add(new SqlParameter("@rowcnt", 0) { Direction = System.Data.ParameterDirection.Output, SqlDbType = System.Data.SqlDbType.Int });

            //command.Connection = connection;
            //SqlDataAdapter adapter = new SqlDataAdapter(command);
            //DataTable data = new DataTable();
            //adapter.Fill(data);
            //SqlDataReader data;
            objDataReader = command.ExecuteReader(CommandBehavior.CloseConnection);
            intVirtualRowCount = Convert.ToInt32(command.Parameters["@rowcnt"].Value);
            //return data;
        }

        public string GetFilterCriteria(string strFilterCondition, string strPattern)
        {
            string returnvalue = "";
            switch (strFilterCondition)
            {
                case "NoFilter": //   GridKnownFunction.NoFilter.ToString():
                    returnvalue = "";
                    break;
                case "Contains": // GridKnownFunction.Contains:
                    returnvalue = " LIKE '%" + strPattern + "%'";
                    break;
                case "DoesNotContain": // GridKnownFunction.DoesNotContain:
                    returnvalue = " Not LIKE '%" + strPattern + "%'";
                    break;
                case "StartsWith":  //GridKnownFunction.StartsWith:
                    returnvalue = " LIKE '" + strPattern + "%'";
                    break;
                case "EndsWith": //GridKnownFunction.EndsWith:
                    returnvalue = " LIKE '%" + strPattern + "'";
                    break;
                case "EqualTo": //GridKnownFunction.EqualTo:
                    returnvalue = " = '" + strPattern + "'";
                    break;
                case "NotEqualTo": //GridKnownFunction.NotEqualTo:
                    returnvalue = " <> '" + strPattern + "'";
                    break;
                case "GreaterThan": //GridKnownFunction.GreaterThan:
                    returnvalue = " > '" + strPattern + "'";
                    break;
                case "LessThan": //GridKnownFunction.LessThan:
                    returnvalue = " < '" + strPattern + "'";
                    break;
                case "GreaterThanOrEqualTo": //GridKnownFunction.GreaterThanOrEqualTo:
                    returnvalue = " >= '" + strPattern + "'";

                    break;
                case "LessThanOrEqualTo":  //GridKnownFunction.LessThanOrEqualTo:
                    returnvalue = " <= '" + strPattern + "'";

                    break;
                case "Between": //GridKnownFunction.Between:
                    if (strPattern.IndexOf(",") == -1)
                    {
                        string[] values = strPattern.Split(',');
                        if (values.Length == 2)
                        {
                            returnvalue = " Between '" + values[0].Trim() + "' and '" + values[1].Trim() + "'";
                        }
                        else
                        {
                            returnvalue = "";
                        }
                    }
                    else if (strPattern.IndexOf(" ") == -1)
                    {
                        string[] values = strPattern.Split(' ');
                        if (values.Length == 2)
                        {
                            returnvalue = " Between '" + values[0].Trim() + "' and '" + values[1].Trim() + "'";
                        }
                        else
                        {
                            returnvalue = "";
                        }
                    }
                    else
                    {
                        returnvalue = "";
                    }
                    break;
                case "NotBetween": //GridKnownFunction.NotBetween:
                    if (strPattern.IndexOf(",") == -1)
                    {
                        string[] values = strPattern.Split(',');
                        if (values.Length == 2)
                        {
                            returnvalue = " Not Between '" + values[0].Trim() + "' and '" + values[1].Trim() + "'";
                        }
                        else
                        {
                            returnvalue = "";
                        }
                    }
                    else if (strPattern.IndexOf(" ") == -1)
                    {
                        string[] values = strPattern.Split(' ');
                        if (values.Length == 2)
                        {
                            returnvalue = " Not Between '" + values[0].Trim() + "' and '" + values[1].Trim() + "'";
                        }
                        else
                        {
                            returnvalue = "";
                        }
                    }
                    else
                    {
                        returnvalue = "";
                    }
                    break;
                case "IsEmpty":  //GridKnownFunction.IsEmpty:
                    returnvalue = " = ''";
                    break;
                case "NotIsEmpty": //GridKnownFunction.NotIsEmpty:
                    returnvalue = " <> ''";
                    break;
                case "IsNull": //GridKnownFunction.IsNull:
                    returnvalue = " Is null ";
                    break;
                case "NotIsNull":  //GridKnownFunction.NotIsNull:
                    returnvalue = " Is not null ";
                    break;
                default:
                    returnvalue = "''";
                    break;
            }

            return returnvalue;
        }


        //This function will return a true/false if the data exists in database
        //public void BindDataList(string strQuery, ref DataList dl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    dl.DataSource = objDs;
        //    dl.DataBind();
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindGridView(string strQuery, ref GridView gv)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    gv.DataSource = objDs;
        //    gv.DataBind();
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindListBox(string strQuery, ref ListBox lb)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    lb.DataSource = objDs;
        //    lb.DataBind();
        //    lb.Items.Insert(0, "- Select -");
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindChkBoxList(string strQuery, ref CheckBoxList chkl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    chkl.DataSource = objDs;
        //    chkl.DataBind();
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindDropDown(string strQuery, ref DropDownList ddl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    ddl.Items.Clear();
        //    ddl.DataSource = objDs;
        //    ddl.DataBind();
        //    ddl.Items.Insert(0, "- Select -");
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindTelerikDropDown(string strQuery, ref RadComboBox ddl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    ddl.Items.Clear();
        //    ddl.DataSource = objDs;
        //    ddl.DataBind();
        //    //ddl.Items.Insert(0, "- Select -");
        //    ddl.Items.Insert(0, new RadComboBoxItem("- Select -", "0"));
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindTelerikDropDownIncludeSelect(string strQuery, ref RadComboBox ddl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    ddl.Items.Clear();
        //    ddl.DataSource = objDs;
        //    ddl.DataBind();
        //    //ddl.Items.Insert(0, "- Select -");
        //    ddl.Items.Insert(0, new RadComboBoxItem("- Select -", "0"));
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindTelerikDropDownIncludeNew(string strQuery, ref RadComboBox ddl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    ddl.Items.Clear();
        //    ddl.DataSource = objDs;
        //    ddl.DataBind();
        //    //ddl.Items.Insert(0, "- Select -");
        //    ddl.Items.Insert(0, new RadComboBoxItem("- New -", "0"));
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindTelerikDropDownExcludeSelect(string strQuery, ref RadComboBox ddl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    ddl.Items.Clear();
        //    ddl.DataSource = objDs;
        //    ddl.DataBind();
        //    //ddl.Items.Insert(0, "- Select -");
        //    //ddl.Items.Insert(0, new RadComboBoxItem("- Select -"));
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindDropDownExcludeSelect(string strQuery, ref DropDownList ddl)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    ddl.Items.Clear();
        //    ddl.DataSource = objDs;
        //    ddl.DataBind();
        //    //ddl.Items.Insert(0, "- Select -");
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        //public void BindTelerikScheduler(string strQuery, ref RadScheduler schdler)
        //{
        //    OpenReadConnection();
        //    objDAdpt = new SqlDataAdapter(strQuery, objConRead);
        //    objDs = new DataSet();
        //    objDAdpt.Fill(objDs);
        //    schdler.Appointments.Clear();
        //    schdler.DataSource = objDs;
        //    schdler.DataBind();
        //    schdler.SelectedDate = DateTime.Today.Date;
        //    objDAdpt.Dispose();
        //    CloseReadConnection();
        //}
        
        public void ExecuteSelectQuery(string strQuery)
        {
            OpenReadConnection();
            objCmd = new SqlCommand(strQuery, objConRead);
            objCmd.ExecuteNonQuery();
            objCmd.Dispose();
            CloseReadConnection();
        }
        
        //Function to create transaction--------------------------------------------------------------------
        public void CreateTransaction()
        {
            objTrans = objConWrite.BeginTransaction();
        }
        
        public void CommitTransaction()
        {
            objTrans.Commit();
        }
        
        public void RollBackTransaction()
        {
            objTrans.Rollback();
        }
        
        //Use Write Connection after this--------------------------------------------------------------------
        
        public void ExecuteEditQuery(string strQuery)
        {
            OpenWriteConnection();
            objCmd = new SqlCommand(strQuery, objConWrite);
            objCmd.ExecuteNonQuery();
            CloseWriteConnection();
        }
        
        public void ExecuteEditQuery(string strQuery, ref int intNoOfRowsUpdated)
        {
            OpenWriteConnection();
            objCmd = new SqlCommand(strQuery, objConWrite);
            intNoOfRowsUpdated = objCmd.ExecuteNonQuery();
            CloseWriteConnection();
        }
        
        public void ExecuteEditQuery(string strQuery, ref int intNoOfRowsUpdated, bool blnWithTransaction)
        {
            objCmd = new SqlCommand(strQuery, objConWrite, objTrans);
            intNoOfRowsUpdated = objCmd.ExecuteNonQuery();
        }
        
        public void CopyDataTableToDatabase(string strQuery, DataTable objDT)
        {
            OpenWriteConnection();
            objDAdpt = new SqlDataAdapter(strQuery, objConWrite);
            SqlCommandBuilder objCmdBldr = new SqlCommandBuilder(objDAdpt);
            objDAdpt.Update(objDT);
            objDAdpt.Dispose();
            CloseWriteConnection();
        }
        
        public void NewSpParameterTable()
        {
            objDTSpParameters = new DataTable();
            objDTSpParameters.Columns.Add("DataType", typeof(string));
            objDTSpParameters.Columns.Add("Parameter", typeof(string));
            objDTSpParameters.Columns.Add("Length", typeof(long));
            objDTSpParameters.Columns.Add("Value", typeof(object));
        }
        
        public void AddSpParameter(string strDataType, string strParameter, long longLength, Object objValue)
        {
            objDr = objDTSpParameters.NewRow();
            objDr["DataType"] = strDataType;
            objDr["Parameter"] = strParameter;
            objDr["Length"] = longLength;
            objDr["Value"] = objValue;
            objDTSpParameters.Rows.Add(objDr);
        }
        
        public void SaveData(string sp) //short
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            Int16 iErrcd;
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            //objUserParameter = objCmd.Parameters.Add("@nErrorCode", SqlDbType.Int);
            //objUserParameter.Direction = ParameterDirection.Output;
            //objUserParameter.Value = 0;
            
            //SqlParameter paramAffectedNoOfRows = new SqlParameter("@nRowsAffected", SqlDbType.Int);
            //paramAffectedNoOfRows.Direction = ParameterDirection.Output;
            //objCmd.Parameters.Add(paramAffectedNoOfRows);
            
            SqlParameter paramOutErr = new SqlParameter("@nErrorCode", SqlDbType.Int);
            paramOutErr.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErr);
            
            SqlParameter paramOutErrMsg = new SqlParameter("@vErrorDesc", SqlDbType.VarChar, 1000);
            paramOutErrMsg.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErrMsg);
            
            OpenWriteConnection();
            objCmd.Connection = objConWrite;
            objCmd.ExecuteNonQuery();
            
            //iErrcd = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            
            //AffectedNoOfRowsReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nRowsAffected"].Value);
            CodeReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            MessageReturnedBySp = objCmd.Parameters["@vErrorDesc"].Value.ToString();
            
            objDTSpParameters.Dispose();
            objCmd.Dispose();
            objConWrite.Close();
            //return iErrcd;
        }
        
        public void SaveDataUsingSP(string sp, bool blnWithTransaction)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "date")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            SqlParameter paramAffectedNoOfRows = new SqlParameter("@nRowsAffected", SqlDbType.Int);
            paramAffectedNoOfRows.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramAffectedNoOfRows);
            
            SqlParameter paramOutErr = new SqlParameter("@nErrorCode", SqlDbType.Int);
            paramOutErr.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErr);
            
            SqlParameter paramOutErrMsg = new SqlParameter("@strErrorMessage", SqlDbType.VarChar, 1000);
            paramOutErrMsg.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErrMsg);
            
            //iErrcd = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            
            //AffectedNoOfRowsReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nRowsAffected"].Value);
            CodeReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            MessageReturnedBySp = objCmd.Parameters["@strErrorMessage"].Value.ToString();
            
            objCmd.Connection = objConWrite;
            objCmd.Transaction = objTrans;
            objCmd.ExecuteNonQuery();
            //return Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
        }
        
        public void SaveAndReturnDataUsingSP(string sp) //, ref string strRtnValue
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "date")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            SqlParameter paramAffectedNoOfRows = new SqlParameter("@nRowsAffected", SqlDbType.Int);
            paramAffectedNoOfRows.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramAffectedNoOfRows);
            
            SqlParameter paramOutErr = new SqlParameter("@nErrorCode", SqlDbType.Int);
            paramOutErr.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErr);
            
            SqlParameter paramOutErrMsg = new SqlParameter("@strErrorMessage", SqlDbType.VarChar, 1000);
            paramOutErrMsg.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErrMsg);
            
            SqlParameter paramReturnValue = new SqlParameter("@vReturnValue1", SqlDbType.VarChar, 1000);
            paramOutErrMsg.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramReturnValue);
            
            //iErrcd = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            
            //AffectedNoOfRowsReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nRowsAffected"].Value);
            CodeReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            MessageReturnedBySp = objCmd.Parameters["@strErrorMessage"].Value.ToString();
            ReturnValue = objCmd.Parameters["@vReturnValue1"].Value.ToString();
            
            OpenWriteConnection();
            objCmd.Connection = objConWrite;
            objCmd.ExecuteNonQuery();
            
            //strRtnValue = objCmd.Parameters["@vReturnValue1"].Value.ToString();
            
            objDTSpParameters.Dispose();
            objCmd.Dispose();
            CloseWriteConnection();
            //return Convert.ToDecimal(objCmd.Parameters["@nErrorCode"].Value.ToString());
        }
        
        public void SaveAndReturnDataUsingSP(string sp, bool blnWithTransaction)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.StoredProcedure;
            objCmd.CommandText = sp;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "date")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            SqlParameter paramAffectedNoOfRows = new SqlParameter("@nRowsAffected", SqlDbType.Int);
            paramAffectedNoOfRows.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramAffectedNoOfRows);
            
            SqlParameter paramOutErr = new SqlParameter("@nErrorCode", SqlDbType.Int);
            paramOutErr.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErr);
            
            SqlParameter paramOutErrMsg = new SqlParameter("@strErrorMessage", SqlDbType.VarChar, 1000);
            paramOutErrMsg.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramOutErrMsg);
            
            SqlParameter paramReturnValue = new SqlParameter("@vReturnValue1", SqlDbType.VarChar, 1000);
            paramOutErrMsg.Direction = ParameterDirection.Output;
            objCmd.Parameters.Add(paramReturnValue);
            
            //iErrcd = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            
            //AffectedNoOfRowsReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nRowsAffected"].Value);
            CodeReturnedBySp = Convert.ToInt16(objCmd.Parameters["@nErrorCode"].Value);
            MessageReturnedBySp = objCmd.Parameters["@strErrorMessage"].Value.ToString();
            ReturnValue = objCmd.Parameters["@vReturnValue1"].Value.ToString();
            objCmd.Connection = objConWrite;
            objCmd.Transaction = objTrans;
            objCmd.ExecuteNonQuery();
            //strRtnValue = objCmd.Parameters["@vReturnValue1"].Value.ToString();
            //return Convert.ToDecimal(objCmd.Parameters["@nErrorCode"].Value.ToString());
        }
        
        public int SaveDataAndGetIdentityUsingQuery(string strQry, ref Int64 longIdentity)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.Text;
            objCmd.CommandText = strQry;
            int iRowsUpdated;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bigint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.BigInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            //objUserParameter = objCmd.Parameters.Add("@nErrorCode", SqlDbType.Int);
            //objUserParameter.Direction = ParameterDirection.Output;
            //objUserParameter.Value = 0;
            
            OpenWriteConnection();
            objCmd.Connection = objConWrite;
            iRowsUpdated = objCmd.ExecuteNonQuery();
            
            objCmd.CommandText = "SELECT @@IDENTITY AS TEMPVALUE";
            longIdentity = (Int64)objCmd.ExecuteScalar();
            
            //objDTSpParameters.Dispose();
            //objCmd.Dispose();
            //objConWrite.Close();
            return iRowsUpdated;
        }
        
        public int SaveDataAndGetIdentityUsingQuery(string strQry, ref Int64 longIdentity, bool blnWithTransaction)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.Text;
            objCmd.CommandText = strQry;
            int iRowsUpdated;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bigint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.BigInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            //objUserParameter = objCmd.Parameters.Add("@nErrorCode", SqlDbType.Int);
            //objUserParameter.Direction = ParameterDirection.Output;
            
            objCmd.Connection = objConWrite;
            objCmd.Transaction = objTrans;
            iRowsUpdated = objCmd.ExecuteNonQuery();
            
            objCmd.CommandText = "SELECT @@IDENTITY AS TEMPVALUE";
            object userNameObj = objCmd.ExecuteScalar();
            if (userNameObj != null)
                longIdentity = Convert.ToInt64(userNameObj.ToString());
            
            //objDTSpParameters.Dispose();
            //objCmd.Dispose();
            //objConWrite.Close();
            return iRowsUpdated;
        }
        
        public int SaveDataUsingQuery(string strQry)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.Text;
            objCmd.CommandText = strQry;
            int iRowsUpdated;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bigint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.BigInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            //objUserParameter = objCmd.Parameters.Add("@nErrorCode", SqlDbType.Int);
            //objUserParameter.Direction = ParameterDirection.Output;
            //objUserParameter.Value = 0;
            
            OpenWriteConnection();
            objCmd.Connection = objConWrite;
            iRowsUpdated = objCmd.ExecuteNonQuery();
            
            //objDTSpParameters.Dispose();
            //objCmd.Dispose();
            //objConWrite.Close();
            return iRowsUpdated;
        }
        
        public int SaveDataUsingQuery(string strQry, bool blnWithTransaction)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.Text;
            objCmd.CommandText = strQry;
            int iRowsUpdated;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bigint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.BigInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            //objUserParameter = objCmd.Parameters.Add("@nErrorCode", SqlDbType.Int);
            //objUserParameter.Direction = ParameterDirection.Output;
            
            objCmd.Connection = objConWrite;
            objCmd.Transaction = objTrans;
            iRowsUpdated = objCmd.ExecuteNonQuery();
            
            //objDTSpParameters.Dispose();
            //objCmd.Dispose();
            //objConWrite.Close();
            
            return iRowsUpdated;
        }
        
        public int SaveAndReturnDataUsingQuery(string strQry, ref string strRtnValue)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.Text;
            objCmd.CommandText = strQry;
            int iRowsUpdated;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bigint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.BigInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            //objUserParameter = objCmd.Parameters.Add("@nErrorCode", SqlDbType.Int);
            //objUserParameter.Direction = ParameterDirection.Output;
            
            objUserParameter = objCmd.Parameters.Add("@vReturnValue1", SqlDbType.NVarChar, 100);
            objUserParameter.Direction = ParameterDirection.Output;
            
            OpenWriteConnection();
            objCmd.Connection = objConWrite;
            iRowsUpdated = objCmd.ExecuteNonQuery();
            
            strRtnValue = objCmd.Parameters["@vReturnValue1"].Value.ToString();
            
            //objDTSpParameters.Dispose();
            //objCmd.Dispose();
            //CloseWriteConnection();
            
            return iRowsUpdated;
        }
        
        public int SaveAndReturnDataUsingQuery(string strQry, ref string strRtnValue, bool blnWithTransaction)
        {
            SqlParameter objUserParameter = new SqlParameter();
            objCmd = new SqlCommand();
            objCmd.CommandType = CommandType.Text;
            objCmd.CommandText = strQry;
            int iRowsUpdated;
            
            foreach (DataRow objDr in objDTSpParameters.Rows)
            {
                if (objDr["DataType"].ToString() == "varchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.VarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "nvarchar")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NVarChar, Convert.ToUInt16(objDr["Length"].ToString()));
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "numeric")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bigint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.BigInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "tinyint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.TinyInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "smallint")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.SmallInt);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }

                if (objDr["DataType"].ToString() == "int")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Int);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if ((objDr["DataType"].ToString() == "date") | (objDr["DataType"].ToString() == "datetime"))
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.DateTime);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "float")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Float);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "text")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Text);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "ntext")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.NText);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "decimal")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Decimal);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "money")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Money);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "image")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Image);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = objDr["Value"];
                }
                
                if (objDr["DataType"].ToString() == "bit")
                {
                    objUserParameter = objCmd.Parameters.Add(objDr["Parameter"].ToString(), SqlDbType.Bit);
                    objUserParameter.Direction = ParameterDirection.Input;
                    objUserParameter.Value = Convert.ToByte(objDr["Value"]);
                }
            }
            
            objCmd.Connection = objConWrite;
            objCmd.Transaction = objTrans;
            iRowsUpdated = objCmd.ExecuteNonQuery();
            
            strRtnValue = objCmd.Parameters["@vReturnValue1"].Value.ToString();
            
            //objDTSpParameters.Dispose();
            //objCmd.Dispose();
            //objConWrite.Close();
            
            return iRowsUpdated;
        }
        
        public void ReturnDataSet(string strSql, ref DataSet objDataSet)
        {
            SqlDataAdapter objDAdpt;
            
            OpenReadConnection();
            
            objDAdpt = new SqlDataAdapter(strSql, objConRead);
            objDAdpt.Fill(objDataSet);
            
            CloseReadConnection();
        }
        
        public string SysDateToDMY(DateTime inputDate)
        {
            return inputDate.ToString("dd/MM/yyyy");
        }
        
        public string DMYToYMD(string inputDate)
        {
            return (Mid(inputDate, 6, 4) + "-" + Mid(inputDate, 3, 2) + "-" + Mid(inputDate, 0, 2));
        }
        
        public int FindDOW(string inputDate)
        {
            string strDayOfWeek;
            int intDOW;
            strDayOfWeek = Convert.ToDateTime(inputDate).DayOfWeek.ToString().ToUpper();
            switch (strDayOfWeek)
            {
                case "SUNDAY":
                    intDOW = 1;
                    break;
                case "MONDAY":
                    intDOW = 2;
                    break;
                case "TUESDAY":
                    intDOW = 3;
                    break;
                case "WEDNESDAY":
                    intDOW = 4;
                    break;
                case "THURSDAY":
                    intDOW = 5;
                    break;
                case "FRIDAY":
                    intDOW = 6;
                    break;
                case "SATURDAY":
                    intDOW = 7;
                    break;
                default:
                    intDOW = 0;
                    break;
            }
            return intDOW;
        }
        
        public static string Mid(string param, int startIndex, int length)
        {
            //start at the specified index in the string ang get N number of
            //characters depending on the lenght and assign it to a variable
            string result = param.Substring(startIndex, length);
            //return the result of the operation
            return result;
        }
        
        //public void SignOut()
        //{
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//Quotation_") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//Invoice") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//Followup") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//C0_") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//C1_") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//C2_") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//C3_") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//C4_") + HttpContext.Current.Session.SessionID + ".pdf");
        //    //File.Delete(HttpContext.Current.Server.MapPath("Files//Receipt_") + HttpContext.Current.Session.SessionID + ".pdf");
        
        //    HttpContext.Current.Session.Abandon();
        //    HttpContext.Current.Session.Clear();
        //    HttpContext.Current.Response.Redirect("Default.aspx");
        //}
        
        public void DisposeObjects()
        {
            if (objCmd != null)
            {
                objCmd.Dispose();
            }
            if (objDAdpt != null)
            {
                objDAdpt.Dispose();
            }
            if (objReader != null)
            {
                objReader.Dispose();
            }
            if (objTrans != null)
            {
                objTrans.Dispose();
            }
            if (objConRead != null)
            {
                if (objConRead.State == ConnectionState.Open)
                {
                    objConRead.Close();
                }
            }
            if (objConWrite != null)
            {
                if (objConWrite.State == ConnectionState.Open)
                {
                    objConWrite.Close();
                }
            }
        }
        
        //public void LogError(string strPage, string strMethod, string strError)
        //{
        //    if (strError != "Thread was being aborted.")
        //    {
        //        DisposeObjects();
        
        //        NewSpParameterTable();
        //        AddSpParameter("varchar", "@vUserName_ER", 100, (HttpContext.Current.Session["User"].ToString() == "" ? "Unknown" : HttpContext.Current.Session["User"].ToString()));
        //        AddSpParameter("varchar", "@vPage_ER", 50, strPage);
        //        AddSpParameter("varchar", "@vMethodName_ER", 50, strMethod);
        //        if (strError.Length > 999)
        //        {
        //            strError = strError.Substring(0, 999);
        //        }
        //        else
        //        {
        //            strError = strError.Substring(0, strError.Length);
        //        }
        //        AddSpParameter("varchar", "@vError_ER", 1000, strError);
        //        AddSpParameter("date", "@dtDateTime_ER", 0, DateTime.Now.ToString());
        
        //        short intTemp = SaveData("spSaveError");
        //    }
        //}
        
        //public void ValidateSession()
        //{
        //    if (HttpContext.Current.Session["User"] != null)
        //    {
        //        if (HttpContext.Current.Session["User"].ToString() == "")
        //        {
        //            HttpContext.Current.Session["Message"] = "Sorry your Login Session is expired, please login again";
        //            HttpContext.Current.Response.Redirect("frmMessage.aspx");
        //        }
        //    }
        //    else
        //    {
        //        HttpContext.Current.Session["Message"] = "Sorry your Login Session is expired, please login again";
        //        HttpContext.Current.Response.Redirect("frmMessage.aspx");
        //    }
        //}
        
        //public bool CheckFormAccess(string strFormId)
        //{
        //    ValidateSession();
        //    bool blFlag = false;
        
        //    foreach (DataRow objDr in ((DataTable)HttpContext.Current.Session["FormList"]).Rows)
        //    {
        //        if (objDr[0].ToString() == strFormId)
        //        {
        //            blFlag = true;
        //        }
        //    }
        
        //    if (blFlag == false)
        //    {
        //        HttpContext.Current.Session["Message"] = "You do not have access to this menu";
        //    }
        
        //    return blFlag;
        //}
        
        //Report Funcitions------------------------------
        //public void SetReportProperties(String sReportName, ref ReportDocument rptDoc) // ERROR: Unsupported modifier : In, Optional string sSelectionFormula, // ERROR: Unsupported modifier : In, Optional string param) 
        //{
        //    int intCounter;
        //    ReportDocument objReport = new ReportDocument();
        //    TableLogOnInfo ConInfo = new TableLogOnInfo();
        //    ParameterDiscreteValue paraValue;
        
        //    //********** for local server ******************
        //    ConInfo.ConnectionInfo.UserID = "sa";
        //    ConInfo.ConnectionInfo.Password = "";
        //    ConInfo.ConnectionInfo.ServerName = ".";
        //    ConInfo.ConnectionInfo.DatabaseName = objCon.Database;
        
        //    //********** for Web server ******************
        //    //ConInfo.ConnectionInfo.UserID = "unitechdbs";
        //    //ConInfo.ConnectionInfo.Password = "Tech123";
        //    //ConInfo.ConnectionInfo.ServerName = "67.19.166.82,1501";
        //    //ConInfo.ConnectionInfo.DatabaseName = objCon.Database;
        
        //    ParameterValues currValue;
        //    SubreportObject mySubReportObject;
        //    ReportDocument mySubRepDoc;
        //    string strParValPair;
        //    string strVal;
        //    int index;
        //    //objReport.Load(sReportName);
        //    rptDoc.Load(sReportName);
        //    //intCounter = objReport.DataDefinition.ParameterFields.Count;
        //    intCounter = rptDoc.DataDefinition.ParameterFields.Count;
        //    for (intCounter = 0; intCounter <= rptDoc.Database.Tables.Count - 1; intCounter++)
        //    {
        //        rptDoc.Database.Tables[intCounter].ApplyLogOnInfo(ConInfo);
        //    }
        //}
        
        //public void ExportToPDF(ReportDocument objReportDoc, string strPDFName, Page objPage)
        //{
        //    ExportOptions crptExportOptions = new ExportOptions();
        //    DiskFileDestinationOptions crptDiskFileDestinationOptions = new DiskFileDestinationOptions();
        //    PdfRtfWordFormatOptions crptFormatTypeOptions = new PdfRtfWordFormatOptions();
        
        //    //Set the destination path and file name
        //    crptDiskFileDestinationOptions.DiskFileName = HttpContext.Current.Server.MapPath("Files\\") + strPDFName + "_" + HttpContext.Current.Session.SessionID + ".pdf";
        
        //    //'Set the destination to a disk file
        //    crptExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
        //    //'Set the format to PDF
        //    crptExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
        //    //'Set the destination options to     DiskFileDestinationOptions object      
        //    crptExportOptions.ExportDestinationOptions = crptDiskFileDestinationOptions;
        //    crptExportOptions.ExportFormatOptions = crptFormatTypeOptions;
        //    //'Set export options
        //    objReportDoc.Export(crptExportOptions);
        
        //    objPage.ClientScript.RegisterStartupScript(typeof(Page), "", "<script language=javascript> window.open('" + "Files/" + strPDFName + "_" + HttpContext.Current.Session.SessionID + ".pdf" + "', '', 'status=1,toolbar=0,scrollbars=1,resizable=1');</script>");
        //}
        
        //public Control GetPostBackControl(Page page)
        //{
        //    Control control = null;
        
        //    string ctrlname = page.Request.Params.Get("__EVENTTARGET");
        //    if (ctrlname != null && ctrlname != string.Empty)
        //    {
        //        control = page.FindControl(ctrlname);
        //    }
        //    else
        //    {
        //        foreach (string ctl in page.Request.Form)
        //        {
        //            Control c = page.FindControl(ctl.Substring(0, ctl.Length - 2));
        //            if (c is System.Web.UI.WebControls.ImageButton)
        //            {
        //                control = c;
        //                break;
        //            }
        //        }
        //    }
        //    return control;
        //}
        
        //public void WebMessageBox(string strMessage, Page Page1)
        //{
        //    if (!Page1.ClientScript.IsStartupScriptRegistered("ClientScript"))
        //    {
        //        Page1.ClientScript.RegisterStartupScript(typeof(Page), "alert", "<script language=javascript> alert('" + strMessage + "');</script>");
        //    }
        //}
        
        //public void WebConfirmMessageBox(string strMessage, ref Button btn)
        //{
        //    btn.Attributes.Add("onclick", "return confirm('" + strMessage + "')");
        //}
        
        public void Dispose()
        {
            // because this class needs a destructor, it also needs this 
            // idiomatic Dispose method 
            //System.GC;
            GC.Collect();
            GC.ReRegisterForFinalize(objConWrite);
        }
        
        //public void PopulateRadPanelBar(ref RadPanelBar PanelMenu1, string strSelectedModuleId)
        //{
        //    int i = 0, j = 0, k = 0;
        //    string strParentId, strParentId1, strSql, strPth;
        //    DataTable objDtMenuLvl1, objDtMenuLvl2, objDtMenuLvl3;
        //    DataRow objDrMenuLvl1, objDrMenuLvl2, objDrMenuLvl3;
        
        //    //strPth = string.Format("{0}://{1}{2}",
        //    //                    HttpContext.Current.Request.Url.Scheme,
        //    //                    HttpContext.Current.Request.ServerVariables["HTTP_HOST"],
        //    //                    (HttpContext.Current.Request.ApplicationPath.Equals("/")) ? string.Empty : HttpContext.Current.Request.ApplicationPath
        //    //                    );
        
        //    strSql = "select * from tblMenu where vMenuParentId = '0000000000' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "'";
        //    objDtMenuLvl1 = ReturnDataTable(strSql, "tblMenuLvl1");
        //    for (i = 1; i <= objDtMenuLvl1.Rows.Count; ++i)                  //(i = 0; i < 2; i++) //Level 1
        //    {
        //        objDrMenuLvl1 = objDtMenuLvl1.Rows[i - 1];
        //        RadPanelItem mnuItm = new RadPanelItem(objDrMenuLvl1["vMenuDisplayName"].ToString());
        //        mnuItm.Value = objDrMenuLvl1["vMenuName"].ToString();
        //        mnuItm.NavigateUrl = objDrMenuLvl1["vLinkPage"].ToString() + "?strMenuId=" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(objDrMenuLvl1["vMenuId"].ToString()));
        //        strParentId = objDrMenuLvl1["vMenuId"].ToString();
        //        strSql = "select * from tblMenu where vMenuParentId = '" + strParentId + "' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "' and vMenuId in (select vMenuId from tblusermenulink where vVisibleYN = 'Y' and vUserNTId = '" + System.Web.HttpContext.Current.Session["strUserId"].ToString() + "')";
        //        objDtMenuLvl2 = ReturnDataTable(strSql, "tblMenuLvl2");
        //        for (j = 1; j <= objDtMenuLvl2.Rows.Count; ++j) // level 2
        //        {
        //            objDrMenuLvl2 = objDtMenuLvl2.Rows[j - 1];
        //            RadPanelItem mnuChildItm = new RadPanelItem(objDrMenuLvl2["vMenuDisplayName"].ToString());
        //            mnuChildItm.Value = objDrMenuLvl2["vMenuName"].ToString();
        //            mnuChildItm.NavigateUrl = objDrMenuLvl2["vLinkPage"].ToString() + "?strMenuId=" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(objDrMenuLvl2["vMenuId"].ToString()));
        //            strParentId1 = objDrMenuLvl2["vMenuId"].ToString();
        //            strSql = "select * from tblMenu where vMenuParentId = '" + strParentId1 + "' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "' and vMenuId in (select vMenuId from tblusermenulink where vVisibleYN = 'Y' and vUserNTId = '" + System.Web.HttpContext.Current.Session["strUserId"].ToString() + "')";
        //            objDtMenuLvl3 = ReturnDataTable(strSql, "tblMenuLvl3");
        //            for (k = 1; k <= objDtMenuLvl3.Rows.Count; ++k) // level 3
        //            {
        //                objDrMenuLvl3 = objDtMenuLvl3.Rows[k - 1];
        //                RadPanelItem mnuSubChildItm = new RadPanelItem(objDrMenuLvl3["vMenuDisplayName"].ToString());
        //                mnuSubChildItm.Value = objDrMenuLvl3["vMenuName"].ToString();
        //                mnuSubChildItm.NavigateUrl = objDrMenuLvl3["vLinkPage"].ToString() + "?strMenuId=" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(objDrMenuLvl3["vMenuId"].ToString()));
        //                mnuChildItm.Items.Add(mnuSubChildItm);
        //            }
        //            mnuItm.Items.Add(mnuChildItm);
        //        }
        //        PanelMenu1.Items.Add(mnuItm);
        //    }
        
        //}
        
        //public void PopulateAspMenu(ref Menu Menu1, string strSelectedModuleId)
        //{
        //    int i = 0, j = 0, k = 0;
        //    string strParentId, strParentId1, strSql;
        //    DataTable objDtMenuLvl1, objDtMenuLvl2, objDtMenuLvl3;
        //    DataRow objDrMenuLvl1, objDrMenuLvl2, objDrMenuLvl3;
        
        //    strSql = "select * from tblMenu where vMenuParentId = '0000000000' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "'";
        //    objDtMenuLvl1 = ReturnDataTable(strSql, "tblMenuLvl1");
        //    for (i = 1; i <= objDtMenuLvl1.Rows.Count; ++i)                  //(i = 0; i < 2; i++) //Level 1
        //    {
        //        objDrMenuLvl1 = objDtMenuLvl1.Rows[i - 1];
        //        MenuItem mnuItm = new MenuItem(objDrMenuLvl1["vMenuDisplayName"].ToString());
        //        mnuItm.Value = objDrMenuLvl1["vMenuName"].ToString();
        //        mnuItm.NavigateUrl = objDrMenuLvl1["vLinkPage"].ToString();
        //        strParentId = objDrMenuLvl1["vMenuId"].ToString();
        //        strSql = "select * from tblMenu where vMenuParentId = '" + strParentId + "' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "' and vMenuId in (select vMenuId from tblusermenulink where vVisibleYN = 'Y' and vUserNTId = '" + System.Web.HttpContext.Current.Session["strUserId"].ToString() + "')";
        //        objDtMenuLvl2 = ReturnDataTable(strSql, "tblMenuLvl2");
        //        for (j = 1; j <= objDtMenuLvl2.Rows.Count; ++j) // level 2
        //        {
        //            objDrMenuLvl2 = objDtMenuLvl2.Rows[j - 1];
        //            MenuItem mnuChildItm = new MenuItem(objDrMenuLvl2["vMenuDisplayName"].ToString());
        //            mnuChildItm.Value = objDrMenuLvl2["vMenuName"].ToString();
        //            mnuChildItm.NavigateUrl = objDrMenuLvl2["vLinkPage"].ToString();
        //            strParentId1 = objDrMenuLvl2["vMenuId"].ToString();
        //            strSql = "select * from tblMenu where vMenuParentId = '" + strParentId1 + "' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "' and vMenuId in (select vMenuId from tblusermenulink where vVisibleYN = 'Y' and vUserNTId = '" + System.Web.HttpContext.Current.Session["strUserId"].ToString() + "')";
        //            objDtMenuLvl3 = ReturnDataTable(strSql, "tblMenuLvl3");
        //            for (k = 1; k <= objDtMenuLvl3.Rows.Count; ++k) // level 3
        //            {
        //                objDrMenuLvl3 = objDtMenuLvl3.Rows[k - 1];
        //                MenuItem mnuSubChildItm = new MenuItem(objDrMenuLvl3["vMenuDisplayName"].ToString());
        //                mnuSubChildItm.Value = objDrMenuLvl3["vMenuName"].ToString();
        //                mnuSubChildItm.NavigateUrl = objDrMenuLvl3["vLinkPage"].ToString();
        //                mnuChildItm.ChildItems.Add(mnuSubChildItm);
        //            }
        //            mnuItm.ChildItems.Add(mnuChildItm);
        //        }
        //        Menu1.Items.Add(mnuItm);
        //    }
        
        //}
        
        //public void PopulateRadMenu(ref RadMenu Menu1, string strSelectedModuleId)
        //{
        //    int i = 0, j = 0, k = 0;
        //    string strParentId, strParentId1, strSql;
        //    DataTable objDtMenuLvl1, objDtMenuLvl2, objDtMenuLvl3;
        //    DataRow objDrMenuLvl1, objDrMenuLvl2, objDrMenuLvl3;
        
        //    strSql = "select * from tblMenu where vMenuParentId = '0000000000' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "'";
        //    objDtMenuLvl1 = ReturnDataTable(strSql, "tblMenuLvl1");
        //    for (i = 1; i <= objDtMenuLvl1.Rows.Count; ++i)                  //(i = 0; i < 2; i++) //Level 1
        //    {
        //        objDrMenuLvl1 = objDtMenuLvl1.Rows[i - 1];
        //        RadMenuItem mnuItm = new RadMenuItem(objDrMenuLvl1["vMenuDisplayName"].ToString());
        //        mnuItm.Value = objDrMenuLvl1["vMenuId"].ToString();
        //        mnuItm.NavigateUrl = objDrMenuLvl1["vLinkPage"].ToString() + "?strMenuId=" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(objDrMenuLvl1["vMenuId"].ToString()));
        //        strParentId = objDrMenuLvl1["vMenuId"].ToString();
        //        strSql = "select * from tblMenu where vMenuParentId = '" + strParentId + "' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "' and intRole in ('" + HttpContext.Current.Session["intRole"].ToString() + "','0') and vMenuId in (select vMenuId from tblusermenulink where vVisibleYN = 'Y' and vUserNTId = '" + System.Web.HttpContext.Current.Session["strUserId"].ToString() + "')";
        //        objDtMenuLvl2 = ReturnDataTable(strSql, "tblMenuLvl2");
        //        for (j = 1; j <= objDtMenuLvl2.Rows.Count; ++j) // level 2
        //        {
        //            objDrMenuLvl2 = objDtMenuLvl2.Rows[j - 1];
        //            RadMenuItem mnuChildItm = new RadMenuItem(objDrMenuLvl2["vMenuDisplayName"].ToString());
        //            mnuChildItm.Value = objDrMenuLvl2["vMenuId"].ToString();
        //            mnuChildItm.NavigateUrl = objDrMenuLvl2["vLinkPage"].ToString() + "?strMenuId=" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(objDrMenuLvl2["vMenuId"].ToString()));
        //            strParentId1 = objDrMenuLvl2["vMenuId"].ToString();
        //            strSql = "select * from tblMenu where vMenuParentId = '" + strParentId1 + "' and substring(vMenuId,1,2) = '" + strSelectedModuleId.ToString() + "' and intRole in ('" + HttpContext.Current.Session["intRole"].ToString() + "','0') and vMenuId in (select vMenuId from tblusermenulink where vVisibleYN = 'Y' and vUserNTId = '" + System.Web.HttpContext.Current.Session["strUserId"].ToString() + "')";
        //            objDtMenuLvl3 = ReturnDataTable(strSql, "tblMenuLvl3");
        //            for (k = 1; k <= objDtMenuLvl3.Rows.Count; ++k) // level 3
        //            {
        //                objDrMenuLvl3 = objDtMenuLvl3.Rows[k - 1];
        //                RadMenuItem mnuSubChildItm = new RadMenuItem(objDrMenuLvl3["vMenuDisplayName"].ToString());
        //                mnuSubChildItm.Value = objDrMenuLvl3["vMenuId"].ToString();
        //                mnuSubChildItm.NavigateUrl = objDrMenuLvl3["vLinkPage"].ToString() + "?strMenuId=" + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(objDrMenuLvl3["vMenuId"].ToString()));
        //                mnuChildItm.Items.Add(mnuSubChildItm);
        //            }
        //            mnuItm.Items.Add(mnuChildItm);
        //        }
        //        Menu1.Items.Add(mnuItm);
        //    }
        
        //}
        
        //public void ExpirePageCache()
        //{
        //    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        //    HttpContext.Current.Response.Cache.SetExpires(DateTime.Now - new TimeSpan(1, 0, 0));
        //    HttpContext.Current.Response.Cache.SetLastModified(DateTime.Now);
        //    HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(false);
        //}
        
        public string EncryptPass(string strString)
        {
            clsEncryptDecrypt objEncDec = new clsEncryptDecrypt(clsEncryptDecrypt.SymmProvEnum.DES);
            return objEncDec.Encrypting(strString, "MRS");
        }
        
        public string DecryptPass(string strString)
        {
            clsEncryptDecrypt objEncDec = new clsEncryptDecrypt(clsEncryptDecrypt.SymmProvEnum.DES);
            return objEncDec.Decrypting(strString, "MRS");
        }
        
        public static string ConvertNumberToWord(long numberVal)
        {
            string[] powers = new string[] { "thousand ", "million ", "billion " };
            string[] ones = new string[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
            string[] tens = new string[] { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
            string wordValue = "";
            
            if (numberVal == 0)
                return "zero";
            if (numberVal < 0)
            {
                wordValue = "negative ";
                numberVal = -numberVal;
            }
            
            long[] partStack = new long[] { 0, 0, 0, 0 };
            int partNdx = 0;
            
            while (numberVal > 0)
            {
                partStack[partNdx++] = numberVal % 1000;
                numberVal /= 1000;
            }
            
            for (int i = 3; i >= 0; i--)
            {
                long part = partStack[i];
                if (part >= 100)
                {
                    wordValue += ones[part / 100 - 1] + " hundred ";
                    part %= 100;
                }
                
                if (part >= 20)
                {
                    if ((part % 10) != 0)
                        wordValue += tens[part / 10 - 2] + " " + ones[part % 10 - 1] + " ";
                    else
                        wordValue += tens[part / 10 - 2] + " ";
                }
                else if (part > 0)
                {
                    wordValue += ones[part - 1] + " ";
                }
                
                if (part != 0 && i > 0)
                    wordValue += powers[i - 1];
            }
            
            return wordValue;
        }
        
        public string ConvertAmtToWords(Decimal nAmt)
        {
            string result = "";
            Int64 nIntRupeeAmt = (Int64)Decimal.Truncate(nAmt);
            Int64 nIntPaiseAmt = (Int64)((nAmt - nIntRupeeAmt) * 100);
            result = result + "Rupees " + " " + Rupees(nIntRupeeAmt) + " ";
            if (nIntPaiseAmt == 0)
            {
                result = result + "only";
            }
            else
            {
                result = result + " and Paise " + Rupees(nIntPaiseAmt) + " only";
            }
            return result;
        }
        
        public string Rupees(Int64 rupees)
        {
            string result = "";
            Int64 res;
            if ((rupees / 10000000) > 0)
            {
                res = rupees / 10000000;
                rupees = rupees % 10000000;
                result = result + ' ' + RupeesToWords(res) + " Crore";
            }
            if ((rupees / 100000) > 0)
            {
                res = rupees / 100000;
                rupees = rupees % 100000;
                result = result + ' ' + RupeesToWords(res) + " Lac";
            }
            if ((rupees / 1000) > 0)
            {
                res = rupees / 1000;
                rupees = rupees % 1000;
                result = result + ' ' + RupeesToWords(res) + " Thousand";
            }
            if ((rupees / 100) > 0)
            {
                res = rupees / 100;
                rupees = rupees % 100;
                result = result + ' ' + RupeesToWords(res) + " Hundred";
            }
            if ((rupees % 10) > 0)
            {
                res = rupees % 100;
                result = result + " " + RupeesToWords(res);
            }
            //result = result;
            return result;
        }
        
        public string RupeesToWords(Int64 rupees)
        {
            string result = "";
            if ((rupees >= 1) && (rupees <= 10))
            {
                if ((rupees % 10) == 1)
                    result = "One";
                if ((rupees % 10) == 2)
                    result = "Two";
                if ((rupees % 10) == 3)
                    result = "Three";
                if ((rupees % 10) == 4)
                    result = "Four";
                if ((rupees % 10) == 5)
                    result = "Five";
                if ((rupees % 10) == 6)
                    result = "Six";
                if ((rupees % 10) == 7)
                    result = "Seven";
                if ((rupees % 10) == 8)
                    result = "Eight";
                if ((rupees % 10) == 9)
                    result = "Nine";
                if ((rupees % 10) == 0)
                    result = "Ten";
            }
            if (rupees > 9 && rupees < 20)
            {
                if (rupees == 11)
                    result = "Eleven";
                if (rupees == 12)
                    result = "Twelve";
                if (rupees == 13)
                    result = "Thirteen";
                if (rupees == 14)
                    result = "Forteen";
                if (rupees == 15)
                    result = "Fifteen";
                if (rupees == 16)
                    result = "Sixteen";
                if (rupees == 17)
                    result = "Seventeen";
                if (rupees == 18)
                    result = "Eighteen";
                if (rupees == 19)
                    result = "Nineteen";
            }
            if (rupees >= 20 && (rupees / 10) == 2 && (rupees % 10) == 0)
                result = "Twenty";
            if (rupees >= 20 && (rupees / 10) == 3 && (rupees % 10) == 0)
                result = "Thirty";
            if (rupees >= 20 && (rupees / 10) == 4 && (rupees % 10) == 0)
                result = "Forty";
            if (rupees >= 20 && (rupees / 10) == 5 && (rupees % 10) == 0)
                result = "Fifty";
            if (rupees >= 20 && (rupees / 10) == 6 && (rupees % 10) == 0)
                result = "Sixty";
            if (rupees >= 20 && (rupees / 10) == 7 && (rupees % 10) == 0)
                result = "Seventy";
            if (rupees >= 20 && (rupees / 10) == 8 && (rupees % 10) == 0)
                result = "Eighty";
            if (rupees >= 20 && (rupees / 10) == 9 && (rupees % 10) == 0)
                result = "Ninety";
            
            if (rupees > 20 && (rupees / 10) == 2 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Twenty One";
                if ((rupees % 10) == 2)
                    result = "Twenty Two";
                if ((rupees % 10) == 3)
                    result = "Twenty Three";
                if ((rupees % 10) == 4)
                    result = "Twenty Four";
                if ((rupees % 10) == 5)
                    result = "Twenty Five";
                if ((rupees % 10) == 6)
                    result = "Twenty Six";
                if ((rupees % 10) == 7)
                    result = "Twenty Seven";
                if ((rupees % 10) == 8)
                    result = "Twenty Eight";
                if ((rupees % 10) == 9)
                    result = "Twenty Nine";
            }
            if (rupees > 20 && (rupees / 10) == 3 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Thirty One";
                if ((rupees % 10) == 2)
                    result = "Thirty Two";
                if ((rupees % 10) == 3)
                    result = "Thirty Three";
                if ((rupees % 10) == 4)
                    result = "Thirty Four";
                if ((rupees % 10) == 5)
                    result = "Thirty Five";
                if ((rupees % 10) == 6)
                    result = "Thirty Six";
                if ((rupees % 10) == 7)
                    result = "Thirty Seven";
                if ((rupees % 10) == 8)
                    result = "Thirty Eight";
                if ((rupees % 10) == 9)
                    result = "Thirty Nine";
            }
            if (rupees > 20 && (rupees / 10) == 4 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Forty One";
                if ((rupees % 10) == 2)
                    result = "Forty Two";
                if ((rupees % 10) == 3)
                    result = "Forty Three";
                if ((rupees % 10) == 4)
                    result = "Forty Four";
                if ((rupees % 10) == 5)
                    result = "Forty Five";
                if ((rupees % 10) == 6)
                    result = "Forty Six";
                if ((rupees % 10) == 7)
                    result = "Forty Seven";
                if ((rupees % 10) == 8)
                    result = "Forty Eight";
                if ((rupees % 10) == 9)
                    result = "Forty Nine";
            }
            if (rupees > 20 && (rupees / 10) == 5 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Fifty One";
                if ((rupees % 10) == 2)
                    result = "Fifty Two";
                if ((rupees % 10) == 3)
                    result = "Fifty Three";
                if ((rupees % 10) == 4)
                    result = "Fifty Four";
                if ((rupees % 10) == 5)
                    result = "Fifty Five";
                if ((rupees % 10) == 6)
                    result = "Fifty Six";
                if ((rupees % 10) == 7)
                    result = "Fifty Seven";
                if ((rupees % 10) == 8)
                    result = "Fifty Eight";
                if ((rupees % 10) == 9)
                    result = "Fifty Nine";
            }
            if (rupees > 20 && (rupees / 10) == 6 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Sixty One";
                if ((rupees % 10) == 2)
                    result = "Sixty Two";
                if ((rupees % 10) == 3)
                    result = "Sixty Three";
                if ((rupees % 10) == 4)
                    result = "Sixty Four";
                if ((rupees % 10) == 5)
                    result = "Sixty Five";
                if ((rupees % 10) == 6)
                    result = "Sixty Six";
                if ((rupees % 10) == 7)
                    result = "Sixty Seven";
                if ((rupees % 10) == 8)
                    result = "Sixty Eight";
                if ((rupees % 10) == 9)
                    result = "Sixty Nine";
            }
            if (rupees > 20 && (rupees / 10) == 7 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Seventy One";
                if ((rupees % 10) == 2)
                    result = "Seventy Two";
                if ((rupees % 10) == 3)
                    result = "Seventy Three";
                if ((rupees % 10) == 4)
                    result = "Seventy Four";
                if ((rupees % 10) == 5)
                    result = "Seventy Five";
                if ((rupees % 10) == 6)
                    result = "Seventy Six";
                if ((rupees % 10) == 7)
                    result = "Seventy Seven";
                if ((rupees % 10) == 8)
                    result = "Seventy Eight";
                if ((rupees % 10) == 9)
                    result = "Seventy Nine";
            }
            if (rupees > 20 && (rupees / 10) == 8 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Eighty One";
                if ((rupees % 10) == 2)
                    result = "Eighty Two";
                if ((rupees % 10) == 3)
                    result = "Eighty Three";
                if ((rupees % 10) == 4)
                    result = "Eighty Four";
                if ((rupees % 10) == 5)
                    result = "Eighty Five";
                if ((rupees % 10) == 6)
                    result = "Eighty Six";
                if ((rupees % 10) == 7)
                    result = "Eighty Seven";
                if ((rupees % 10) == 8)
                    result = "Eighty Eight";
                if ((rupees % 10) == 9)
                    result = "Eighty Nine";
            }
            if (rupees > 20 && (rupees / 10) == 9 && (rupees % 10) != 0)
            {
                if ((rupees % 10) == 1)
                    result = "Ninety One";
                if ((rupees % 10) == 2)
                    result = "Ninety Two";
                if ((rupees % 10) == 3)
                    result = "Ninety Three";
                if ((rupees % 10) == 4)
                    result = "Ninety Four";
                if ((rupees % 10) == 5)
                    result = "Ninety Five";
                if ((rupees % 10) == 6)
                    result = "Ninety Six";
                if ((rupees % 10) == 7)
                    result = "Ninety Seven";
                if ((rupees % 10) == 8)
                    result = "Ninety Eight";
                if ((rupees % 10) == 9)
                    result = "Ninety Nine";
            }
            return result;
        }
        
        public int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }
        
        private string RandomString(int size, bool lowerCase)
        {
            StringBuilder builder = new StringBuilder();
            Random random = new Random();
            char ch;
            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
            }
            if (lowerCase)
                return builder.ToString().ToLower();
            return builder.ToString();
        }
        
        public string GeneratePassword(int intFirstNoOfChars, int FourDigitNoFrom, int FourDigitNoTo, int LastNoOfChars)
        {
            StringBuilder builder = new StringBuilder();
            //builder.Append(RandomString(4, true));
            //builder.Append(RandomNumber(1000, 9999));
            //builder.Append(RandomString(2, false));
            
            builder.Append(RandomString(intFirstNoOfChars, true));
            builder.Append(RandomNumber(FourDigitNoFrom, FourDigitNoTo));
            builder.Append(RandomString(LastNoOfChars, false));
            
            return builder.ToString();
        }
        
        public string EncodeJsString(string s)
        {
            StringBuilder sb = new StringBuilder();
            //sb.Append("\"");
            foreach (char c in s)
            {
                switch (c)
                {
                    case '\"':
                        sb.Append("\\\"");
                        break;
                    case '\\':
                        sb.Append("\\\\");
                        break;
                    case '\b':
                        sb.Append("\\b");
                        break;
                    case '\f':
                        sb.Append("\\f");
                        break;
                    case '\n':
                        sb.Append("\\n");
                        break;
                    case '\r':
                        sb.Append("\\r");
                        break;
                    case '\t':
                        sb.Append("\\t");
                        break;
                    default:
                        int i = (int)c;
                        if (i < 32 || i > 127)
                        {
                            sb.AppendFormat("\\u{0:X04}", i);
                        }
                        else
                        {
                            sb.Append(c);
                        }
                        break;
                }
            }
            //sb.Append("\"");
            sb.Replace("'", " ");
            
            return sb.ToString();
        }
        
        public int ReturnTableColumnWidth(string csTableName, string csColumnName, int iDefault)
        {
            int iSize = iDefault;
            String strQuery = "select CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" + csTableName + "' AND COLUMN_NAME = '" + csColumnName + "'";
            
            iSize = Convert.ToInt32(ReturnFieldData(strQuery, true));
            
            return iSize;
        }
    }
    
    #endregion

    #region ClassToBeUsedForDeclaringStaticClassToStoreFilterCriteriaForRadgrid

    //This class is to be used to create static class which will be used to stored filter criteria on radgrid
    public class ClsFilterCriteria
    {
        public string ColumnName { get; set; }
        public string FilterCriteria { get; set; }

    }

    #endregion

    #region encryptionClassFunctionLibrary

    public class clsEncryptDecrypt
    {
        /// <summary>
        /// SymmCrypto is a wrapper of System.Security.Cryptography.SymmetricAlgorithm classes
        /// and simplifies the interface. It supports customized SymmetricAlgorithm as well.
        /// </summary>
        /// <remarks>
        /// Supported .Net intrinsic SymmetricAlgorithm classes.
        /// </remarks>
        public enum SymmProvEnum : int
        {
            DES,
            RC2,
            Rijndael
        }
        
        private SymmetricAlgorithm mobjCryptoService;
        
        public clsEncryptDecrypt(SymmProvEnum NetSelected)
        {
            switch (NetSelected)
            {
                case SymmProvEnum.DES:
                    mobjCryptoService = new DESCryptoServiceProvider();
                    break;
                case SymmProvEnum.RC2:
                    mobjCryptoService = new RC2CryptoServiceProvider();
                    break;
                case SymmProvEnum.Rijndael:
                    mobjCryptoService = new RijndaelManaged();
                    break;
            }
        }
        
        /// <remarks>
        /// Depending on the legal key size limitations of a specific CryptoService provider
        /// and length of the private key provided, padding the secret key with space character
        /// to meet the legal size of the algorithm.
        /// </remarks>
        private byte[] GetLegalKey(string Key)
        {
            string sTemp = Key;
            if (mobjCryptoService.LegalKeySizes.Length > 0)
            {
                int moreSize = mobjCryptoService.LegalKeySizes[0].MinSize;
                // key sizes are in bits
                if (sTemp.Length * 8 > mobjCryptoService.LegalKeySizes[0].MaxSize)
                    // get the left of the key up to the max size allowed
                    sTemp = sTemp.Substring(0, mobjCryptoService.LegalKeySizes[0].MaxSize / 8);
                else if (sTemp.Length * 8 < moreSize)
                    if (mobjCryptoService.LegalKeySizes[0].SkipSize == 0)
                        // simply pad the key with spaces up to the min size allowed
                        sTemp = sTemp.PadRight(moreSize / 8, ' ');
                    else
                    {
                        while (sTemp.Length * 8 > moreSize)
                            moreSize += mobjCryptoService.LegalKeySizes[0].SkipSize;
                        
                        sTemp = sTemp.PadRight(moreSize / 8, ' ');
                    }
            }
            
            // convert the secret key to byte array
            return ASCIIEncoding.ASCII.GetBytes(sTemp);
        }
        
        public string Encrypting(string Source, string Key)
        {
            byte[] bytIn = System.Text.ASCIIEncoding.ASCII.GetBytes(Source);
            
            // create a MemoryStream so that the process can be done without I/O files
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            
            byte[] bytKey = GetLegalKey(Key);
            
            // set the private key
            mobjCryptoService.Key = bytKey;
            mobjCryptoService.IV = bytKey;
            
            // create an Encryptor from the Provider Service instance
            ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
            
            // create Crypto Stream that transforms a stream using the encryption
            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
            
            // write out encrypted content into MemoryStream
            cs.Write(bytIn, 0, bytIn.Length);
            cs.FlushFinalBlock();
            
            // get the output and trim the '\0' bytes
            byte[] bytOut = ms.GetBuffer();
            int i = 0;
            for (i = 0; i < bytOut.Length; i++)
                if (bytOut[i] == 0)
                    break;
            
            // convert into Base64 so that the result can be used in xml
            return System.Convert.ToBase64String(bytOut, 0, i);
        }
        
        public string Decrypting(string Source, string Key)
        {
            // convert from Base64 to binary
            byte[] bytIn = System.Convert.FromBase64String(Source);
            // create a MemoryStream with the input
            System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);
            
            byte[] bytKey = GetLegalKey(Key);
            
            // set the private key
            mobjCryptoService.Key = bytKey;
            mobjCryptoService.IV = bytKey;
            
            // create a Decryptor from the Provider Service instance
            ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
            
            // create Crypto Stream that transforms a stream using the decryption
            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
            
            // read out the result from the Crypto Stream
            System.IO.StreamReader sr = new System.IO.StreamReader(cs);
            string sEncoded = sr.ReadToEnd();
            return sEncoded;
        }
    }

    #endregion
}

 

Database tables - 

 

USE [Test]
GO

/****** Object:  Table [dbo].[ItemMaster]    Script Date: 30-10-2015 13:50:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[ItemMaster](
[ItemMasterId] [smallint] NOT NULL,
[RefCompanyId] [tinyint] NOT NULL,
[ItemCode] [nvarchar](25) NOT NULL,
[AlternateItemCode] [nvarchar](25) NOT NULL,
[ItemName] [nvarchar](75) NOT NULL,
[Remarks] [nvarchar](100) NULL,
[ItemType] [nvarchar](2) NOT NULL,
[MethodOfDispatch] [nvarchar](4) NULL,
[ItemClass] [nvarchar](1) NOT NULL,
[GroupId] [smallint] NULL,
[SubGroupId1] [smallint] NULL,
[SubGroupId2] [smallint] NULL,
[DefaultUOMId] [smallint] NOT NULL,
[UOMPurchaseId] [smallint] NULL,
[UOMConsumptionId] [smallint] NULL,
[UOMDispatchId] [smallint] NULL,
[CategoryId] [smallint] NOT NULL,
[HoldingDeptId] [smallint] NOT NULL,
[MinInventoryLevel] [smallint] NULL,
[MaxInventoryLevel] [int] NULL,
[ReorderLevel] [smallint] NULL,
[StandardRate] [money] NULL,
[StandardCost] [money] NULL,
[StandardLeadTimeInDays] [tinyint] NULL,
[DefaultSupplierId] [smallint] NULL,
[DefaultWarehouseId] [smallint] NULL,
[BatchNoSetting] [nvarchar](1) NULL,
[SerialNoSetting] [nvarchar](1) NULL,
[PercentageVarienceAllowed] [decimal](18, 4) NULL,
[WarrantyPeriodInDays] [smallint] NULL,
[NetWeight] [decimal](18, 4) NULL,
[GrossWight] [decimal](18, 4) NULL,
[BOMApplicable] [bit] NULL,
[AllowSubcontracting] [bit] NULL,
[TaxesApplicable] [bit] NULL,
[IsSaleable] [bit] NULL,
[InspectionRequired] [bit] NULL,
[TaxScheduleId] [smallint] NULL,
[GLCode] [nvarchar](25) NULL,
[IsActive] [bit] NOT NULL,
[AddedBy] [nvarchar](25) NULL,
[AddedDate] [datetime] NULL,
[UpdatedBy] [nvarchar](25) NULL,
[UpdateDate] [datetime] NULL
) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[PartyMaster]    Script Date: 30-10-2015 13:50:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[PartyMaster](
[PartyId] [int] NOT NULL,
[RefCompanyId] [tinyint] NOT NULL,
[MannualId] [nvarchar](20) NULL,
[PartyTypeId] [smallint] NOT NULL,
[VendorCode] [nvarchar](20) NULL,
[PartyName] [nvarchar](100) NOT NULL,
[PartyShortName1] [nvarchar](20) NULL,
[PartyShortName2] [nvarchar](10) NULL,
[RegOffAdd1] [nvarchar](50) NOT NULL,
[RegOffAdd2] [nvarchar](50) NULL,
[RegOffAdd3] [nvarchar](50) NULL,
[RegOffCity] [nvarchar](50) NULL,
[RegOffDistrict] [nvarchar](50) NULL,
[RegOffState] [int] NULL,
[RegOffCountry] [smallint] NULL,
[RegOffPin] [nvarchar](10) NULL,
[RegOffContactNo] [nvarchar](50) NULL,
[RegOffFaxNo] [nvarchar](30) NULL,
[RegOffEmailTo] [nvarchar](50) NULL,
[CorrOffAdd1] [nvarchar](50) NOT NULL,
[CorrOffAdd2] [nvarchar](50) NULL,
[CorrOffAdd3] [nvarchar](50) NULL,
[CorrOffCity] [nvarchar](50) NULL,
[CorrOffDistrict] [nvarchar](50) NULL,
[CorrOffState] [int] NULL,
[CorrOffCountry] [smallint] NULL,
[CorrOffPin] [nvarchar](10) NULL,
[CorrOffContactNo] [nvarchar](50) NULL,
[CorrOffFaxNo] [nvarchar](30) NULL,
[CorrOffEmailTo] [nvarchar](50) NULL,
[RegionId] [smallint] NOT NULL,
[ZoneId] [smallint] NOT NULL,
[TerritoryId] [smallint] NOT NULL,
[WebSite] [nvarchar](30) NULL,
[PAN_GR_No] [nvarchar](50) NULL,
[WardNo] [nvarchar](25) NULL,
[STNo] [nvarchar](25) NULL,
[CSTNo] [nvarchar](25) NULL,
[VATNo] [nvarchar](25) NULL,
[ServiceTax] [nvarchar](25) NULL,
[TanNo] [nvarchar](25) NULL,
[ExciseNo] [nvarchar](25) NULL,
[ECCNo] [nvarchar](25) NULL,
[LBTNo] [nvarchar](25) NULL,
[TaxScheduleId] [smallint] NULL,
[IfOEM] [bit] NOT NULL,
[ConcernedPerson] [nvarchar](50) NULL,
[GLAccountCode] [nvarchar](25) NULL,
[CreditLimit] [int] NULL,
[CreditDays] [tinyint] NULL,
[ActiveFromDt] [datetime] NOT NULL,
[ActiveTillDt] [datetime] NOT NULL,
[AddedBy] [nvarchar](25) NULL,
[AddedDate] [datetime] NULL,
[UpdatedBy] [nvarchar](25) NULL,
[UpdateDate] [datetime] NULL
) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[SalesOrderDetail]    Script Date: 30-10-2015 13:50:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[SalesOrderDetail](
[Id] [int] NOT NULL,
[SalesOrderId] [nvarchar](25) NOT NULL,
[SalesOrderLineNo] [tinyint] NOT NULL,
[ItemCode] [nvarchar](25) NOT NULL,
[UOMId] [tinyint] NOT NULL,
[OrderQty] [decimal](18, 4) NOT NULL,
[Rate] [money] NOT NULL,
[IsActive] [bit] NOT NULL,
[AddedBy] [nvarchar](25) NULL,
[AddedDate] [datetime] NULL,
[UpdatedBy] [nvarchar](25) NULL,
[UpdateDate] [datetime] NULL
) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[SalesOrderMaster]    Script Date: 30-10-2015 13:50:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[SalesOrderMaster](
[Id] [int] NOT NULL,
[RefCompanyId] [tinyint] NOT NULL,
[SalesOrderId] [nvarchar](25) NOT NULL,
[SalesOrderDate] [datetime] NOT NULL,
[PartyId] [int] NOT NULL,
[PartyRefPONo] [nvarchar](25) NULL,
[PartyRefPODate] [datetime] NULL,
[ConsigneePartyId] [int] NOT NULL,
[PackingAndForwarding] [nvarchar](100) NULL,
[PaymentTerms] [nvarchar](100) NULL,
[DeliveryTerms] [nvarchar](100) NULL,
[Discount] [decimal](5, 2) NULL,
[Status] [nvarchar](1) NULL,
[IsActive] [bit] NOT NULL,
[AddedBy] [nvarchar](25) NULL,
[AddedDate] [datetime] NULL,
[UpdatedBy] [nvarchar](25) NULL,
[UpdateDate] [datetime] NULL
) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[UOMMaster]    Script Date: 30-10-2015 13:50:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[UOMMaster](
[UOMId] [smallint] IDENTITY(100,1) NOT NULL,
[RefCompanyId] [tinyint] NOT NULL,
[UOMName] [nvarchar](50) NULL,
[IsActive] [bit] NOT NULL CONSTRAINT [DF_UOMMaster_IsActive]  DEFAULT ((1)),
[AddedBy] [nvarchar](25) NULL CONSTRAINT [DF_UOMMaster_AddedBy]  DEFAULT (suser_name()),
[AddedDate] [datetime] NULL CONSTRAINT [DF_UOMMaster_AddedDate]  DEFAULT (getdate()),
[UpdatedBy] [nvarchar](25) NULL,
[UpdateDate] [datetime] NULL CONSTRAINT [DF_UOMMaster_UpdateDate]  DEFAULT (getdate())
) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[Users]    Script Date: 30-10-2015 13:50:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Users](
[Id] [smallint] IDENTITY(1,1) NOT NULL,
[RefCompanyId] [tinyint] NOT NULL,
[UserId] [varchar](10) NOT NULL,
[Password] [varchar](250) NULL,
[UserName] [varchar](50) NULL,
[EmailId] [varchar](75) NULL,
[OfficeLocationId] [varchar](10) NULL,
[NTId] [varchar](50) NULL,
[Role] [tinyint] NULL CONSTRAINT [DF_tblUser_intRole]  DEFAULT ('0'),
[MobileNo] [varchar](15) NULL,
[Dept] [varchar](25) NULL,
[SittingLocation] [varchar](25) NULL,
[EmailId1] [varchar](75) NULL,
[IsActive] [bit] NOT NULL CONSTRAINT [DF_tblUser_vActuveInactive]  DEFAULT ((1)),
[ChangePwdFirstLogin] [bit] NULL CONSTRAINT [DF_tblUser_vChangePwdFirstLogin]  DEFAULT ((0)),
[ForgotPasswordQuestion] [varchar](75) NULL,
[ForgotPasswordAnswer] [varchar](75) NULL,
[PasswordExpiryYN] [bit] NULL CONSTRAINT [DF_tblUser_vPasswordExpiryYN]  DEFAULT ((0)),
[PasswordExpiryInDays] [tinyint] NULL,
[PasswordUpdatedOn] [datetime] NULL,
[LastLoginDate] [datetime] NULL,
[DefaultSkin] [nvarchar](50) NULL,
[LastIPAddress] [nvarchar](50) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

USE [Test]
GO

/****** Object:  StoredProcedure [dbo].[GetSelectedPageDataForGrid]    Script Date: 30-10-2015 13:50:48 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


-- =============================================
-- Author: Temp
-- Create date: 
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[GetSelectedPageDataForGrid] 
@TableOrView nvarchar(Max),             
    @SelectedPage int,
    @PageSize int,
    @Columns nvarchar(Max),
    @OrderByColumn nvarchar(Max),
    --@OrderByDirection nvarchar(40),
    @WhereClause nvarchar(Max),
    @rowcnt int=0 output
AS
SET NOCOUNT ON
DECLARE @RowCntrQry nvarchar(Max), @SqlQuery nvarchar(Max)
-- the sort order should be specified with columns like Name ASC, Address1 Desc etc
-- the code below will reverse the specified order. this reversed order will be used in the second nested query below 
-- the logic to get the rows required for specific page no is - select the rows in reverse sorting order (reverse sorting order is derived using below query)
-- and on the result select top rows as defined in the page size of the grid

--print @Columns
--print CHARINDEX(' as ',@Columns,1)
--print CHARINDEX(',',@Columns,1)-1
--print CHARINDEX(',',@Columns,1)-1-CHARINDEX(' as ',@Columns,1)
--print substring(@Columns,CHARINDEX(' as ',@Columns,1)+3, CHARINDEX(',',@Columns,1)-1-CHARINDEX(' as ',@Columns,1)-2)

if @OrderByColumn = ''
begin
if CHARINDEX(' as ',@Columns,1) > 0
begin
set @OrderByColumn = substring(@Columns,CHARINDEX(' as ',@Columns,1)+3, CHARINDEX(',',@Columns,1)-1-CHARINDEX(' as ',@Columns,1)-2) + ' Asc'
end
else
begin
set @OrderByColumn = substring(@Columns,1, CHARINDEX(',',@Columns,1)-1) + ' Asc'
end
end

print @OrderByColumn


IF @WhereClause <> ''
  BEGIN
    SET @WhereClause = ' WHERE ' + @WhereClause
  END

print @WhereClause

set @RowCntrQry = 'select @cntr = count(*) from ' + @TableOrView + ' ' +@WhereClause

print @RowCntrQry

EXEC sp_executesql @RowCntrQry, N'@cntr int OUTPUT', @cntr=@rowcnt OUTPUT


SET @SqlQuery = N'SELECT ' + @Columns +
        ' FROM ' + @TableOrView + @WhereClause + '
        ORDER BY ' + @OrderByColumn + ' OFFSET (' + cast((@SelectedPage -1) * @PageSize as nvarchar(10)) + ') ROWS FETCH NEXT ' + cast(@PageSize as nvarchar(10)) + ' ROWS ONLY'

--select @SqlQuery

EXEC(@SqlQuery)

SET NOCOUNT OFF

GO

web.config -

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="telerik.web.ui">
      <section name="radCompression" type="Telerik.Web.UI.RadCompressionConfigurationSection, Telerik.Web.UI, PublicKeyToken=121fae78165ba3d4" allowDefinition="MachineToApplication" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <telerik.web.ui>
    <radCompression enablePostbackCompression="true" />
  </telerik.web.ui>
  <connectionStrings>
    <add name="ConString" connectionString="server=;database=test;" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <trace enabled="false" localOnly="true"></trace>
    <customErrors defaultRedirect="~/Error.aspx" mode="On" redirectMode="ResponseRewrite" />
    <compilation debug="true" targetFramework="4.0" />
    <!--<authentication mode="Forms">
      <forms defaultUrl="~/frmMain.aspx" loginUrl="~/login/frmLogin.aspx" slidingExpiration="true" timeout="2880" cookieless="UseCookies"></forms>
    </authentication>-->
    <authorization>
      <deny users="?" />
      <!--<allow users="*"/>-->
    </authorization>
    <httpRuntime />
    <pages enableViewState="false">
      <controls>
        <add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI" />
      </controls>
    </pages>
    <httpHandlers>
      <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false" />
      <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false" />
    </httpHandlers>
    <httpModules>
      <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" />
      <add name="RadCompression" type="Telerik.Web.UI.RadCompression" />
    </httpModules>
  </system.web>
  <appSettings>
    <!--<add key="Telerik.Web.UI.RenderMode" value="Auto" />-->
    <add key="Telerik.Web.UI.ComboBox.RenderMode" value="Auto" />
    <add key="Telerik.Web.UI.Menu.RenderMode" value="Auto" />
    <add key="Telerik.Web.UI.StyleSheetFolders" value="~/StyleSheets/" />
    <!--<add key="Telerik.Skin" value="Bootstrap" />
    <add key="Telerik.Menu.Skin" value="Glow" />
    <add key="Telerik.Toolbar.Skin" value="Default" />-->
    <add key="Telerik.ScriptManager.TelerikCdn" value="Disabled" />
    <add key="Telerik.StyleSheetManager.TelerikCdn" value="Disabled" />
  </appSettings>
  <system.webServer>
    <security>
      <authentication>
        <!-- Need to enable anonymous access and turn off Windows authentication for the virtual path -->
        <anonymousAuthentication enabled="true" />
        <windowsAuthentication enabled="false" />
      </authentication>
    </security>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="RadUploadModule" />
      <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" preCondition="integratedMode" />
      <remove name="RadCompression" />
      <add name="RadCompression" type="Telerik.Web.UI.RadCompression" preCondition="integratedMode" />
    </modules>
    <handlers>
      <remove name="ChartImage_axd" />
      <add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode" />
      <remove name="Telerik_Web_UI_SpellCheckHandler_axd" />
      <add name="Telerik_Web_UI_SpellCheckHandler_axd" path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" preCondition="integratedMode" />
      <remove name="Telerik_Web_UI_DialogHandler_aspx" />
      <add name="Telerik_Web_UI_DialogHandler_aspx" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" preCondition="integratedMode" />
      <remove name="Telerik_RadUploadProgressHandler_ashx" />
      <add name="Telerik_RadUploadProgressHandler_ashx" path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" preCondition="integratedMode" />
      <remove name="Telerik_Web_UI_WebResource_axd" />
      <add name="Telerik_Web_UI_WebResource_axd" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" preCondition="integratedMode" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <!--<system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="ErpWebApplication.Services.FetchDataAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="ErpWebApplication.Services.FetchData">
        <endpoint address="" behaviorConfiguration="ErpWebApplication.Services.FetchDataAspNetAjaxBehavior" binding="webHttpBinding" contract="ErpWebApplication.Services.FetchData" />
      </service>
    </services>
  </system.serviceModel>-->
</configuration>​​

0
Milind
Top achievements
Rank 1
answered on 04 Nov 2015, 02:10 AM

Hello,

Anybody on how to work with paging for detailtable in hierarchy radgrid when view state is disable. The above code is for sample project. Project zip file can not be attached here as only image files are allowed as attachment. Again I am repeating the issue as below -

 While working with hierarchy radgrid how to get paging work when viewstate is disabled. Like needdatasource for radgridview what is the event that will be fired for detail table. In need data source e.isdetailtable property always returns false probebaly because viewstate is disabled.

Hope somebody will respond.

Thanks

 

Milind Shevade

0
Kostadin
Telerik team
answered on 04 Nov 2015, 07:31 AM
Hello Milind,

I re-read your original inquiry and I notice that you are talking about a grid with disabled ViewState. Keep in mind in such case RadGrid does not manage the expanded state and you need to manually save the expanded state. You can try the approach form the following code library and see how it works on your end. I assume this will fix the issue with the custom paging of the detail tables.

Regards,
Kostadin
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
0
Milind
Top achievements
Rank 1
answered on 04 Nov 2015, 12:36 PM

Hi,

Thanks for reply 

Pls provide the link to code library. Also pls let me know how to handle custom paging in case the view state is disabled. 

Like needdatasource for radgridview what is the event that will be fired for detail table. I try to go to page 2 of detailtable, ​in need data source e.isdetailtable property always returns false. So click on page 2 of detail table ends up in rebinding the radgrid rather than going on page 2 of detailtable

For entire project the viewstate is disabled.

 Thanks,

 

Milind

0
Kostadin
Telerik team
answered on 09 Nov 2015, 10:40 AM
Hi Milind,

please excuse me for the missing link in my previous reply. The code library could be found here.
Regards your other question the event that fires when populating the detail tables is OnDetailTableDataBind. You can also examine the following live example where a programmatic binding is demonstrated.

Regards,
Kostadin
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Tags
Grid
Asked by
Milind
Top achievements
Rank 1
Answers by
Milind
Top achievements
Rank 1
Kostadin
Telerik team
Share this question
or