ADC Nested Grid problem in Firefox & crome etc..

Last post 02-10-2009 3:58 PM by xxxd. 12 replies.
Page 1 of 1 (13 items)
Sort Posts: Previous Next
  • 01-12-2009 2:21 AM

    ADC Nested Grid problem in Firefox & crome etc..

     Hi

     Childgrid not expand in firefox..

     IN IE6 & IE7 no problem at all.. all the features working fine...(sorting ,paging , drag & drop and child grid expanding etc..)

    In fire fox and google crome browsers....not supporting child grid expanding(remanig feautures working fine sorting , paging and dragand drop)

     

    thanks

    ramesh

     

     

  •  Advertisement

    Featured Advertisement

     
  • 01-12-2009 8:39 AM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

     Hi

     can u plz give me suggestions how can I achive this....?

    I am waiting for ur reply...

    thanks

    ramesh

     

     

  • 01-12-2009 8:44 AM In reply to

    • sonu
    • Top 10 Contributor
    • Joined on 05-22-2006
    • Montreal / Canada
    • Slacker
    • Points 12,183
    • MVP

    Re: ADC Nested Grid problem in Firefox & crome etc..

    I have used the ADC controls in Firefox many times and in fact it is the main browser I use for testing and it always worked for me.

    What exactly is the error you are getting?

    [MVP since 2005] [MCAD]
    Webmaster of DotNetSlackers
    Question or Suggestion?
    Feel free to ask my any .NET question
    Our Posting FAQ
  • 01-12-2009 9:29 AM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

     

    paging ,dartg and drop,sorting..evrything working fine in all the browsers..

    only child grid is not appended..to parent row..its creating emty row...?

     Shall I send the code...?

    In IE if Iam clicking...parent row..Child grid expanding...and collapsing..all the features working fine..

    In firefox..nothing will be happened...?

    not getting any javascript error..!

    every parent row click event its just creating one empty child row...

    its happen in non IE browsers...

     Shall I send the code...?

    thanks

    ramesh

  • 01-12-2009 9:42 AM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

    //************Start    AjaxGrid.aspx***************************************//

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxGrid.aspx.cs" Inherits="AjaxGrid" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
        <link href="StyleSheet.css" rel="stylesheet" type="text/css" />

        <script runat="server">
        </script>

        <script language="javascript" type="text/javascript">
           
            var _gridView;
            var _pager;
            var _gridView2;
            var _pager2;
            var _childPage = 0;
            var _row;
            var _childrows = null;
            var _sObj = null;
            var _sImgId = null;
            var _nestedDiv = null;

            function expandcollapse(row, imgid) {
               // debugger;
                _row = row;
                _gridView2 = null;

                var div = _gridView._element.document.getElementById(_sObj);
                var img = _gridView._element.document.getElementById(imgid);

                if (_gridView._element.document.getElementById('nested').style.display == "none") {
                    _gridView._element.document.getElementById('nested').style.display = "block";
                    if (_row == 'alt') {
                        img.src = "Images/minus.gif";
                    }
                    else {
                        img.src = "Images/minus.gif";
                    }
                    img.alt = "Close to view other Customers";
                }
                else {
                    _gridView._element.document.getElementById('nested').style.display = "none";
                    if (_row == 'alt') {
                        img.src = "Images/plus.gif";
                    }
                    else {
                        img.src = "Images/plus.gif";
                    }
                    img.alt = "Expand to show Orders";
                }

            }
            function expandcollapse(imgid) {
               // debugger;

                _gridView2 = null;
                _gridView = $find('<%= GridView1.ClientID %>');
                //var div = _gridView._element.document.getElementById(_sObj);
                var img = _gridView._element.document.getElementById(imgid);

                if (_gridView._element.document.getElementById('nested').style.display == "none") {
                    _gridView._element.document.getElementById('nested').style.display = "block";
                    if (_row == 'alt') {
                        img.src = "Images/minus.gif";
                    }
                    else {
                        img.src = "Images/minus.gif";
                    }
                    img.alt = "Close to view other Customers";
                }
                else {
                    _gridView._element.document.getElementById('nested').style.display = "none";
                    if (_row == 'alt') {
                        img.src = "Images/plus.gif";
                        Pager2.set_pageIndex(0);
                    }
                    else {
                        img.src = "Images/plus.gif";
                        Pager2.set_pageIndex(0);
                    }
                    img.alt = "Expand to show Orders";
                }

            }

            //***************GirdView1 Events *****************//
            function pageLoad(sender, e) {
               // debugger;
                _gridView = $find('<%= GridView1.ClientID %>');
                _pager = $find('<%= Pager1.ClientID %>');
                _gridView2 = $find('<%=GridView2.ClientID %>');
                _pager2 = $find('<%= Pager2.ClientID %>');
                _gridView.loadColumnsFromProfile('DndColumns');
                _gridView2.loadColumnsFromProfile('DndColumns');
                loadCustomers();
            }
            function loadCustomers() {
               // debugger;
                _nestedDiv = $get("nested");
                var sortColumn = GridView1.get_sortColumn();
                var sortOrder = (GridView1.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                var startIndex = (Pager1.get_pageIndex() * Pager1.get_pageSize());
                DataService.GetCustomerList(startIndex, Pager1.get_pageSize(), sortColumn, sortOrder, onLoadSuccess);

            }
            function onLoadSuccess(result) {
               // debugger;
                Pager1.set_recordCount(result.Total);
                GridView1.set_dataSource(result.Rows);
                GridView1.dataBind();
            }
            function onSortCommand(sender, e) {
                GridView1.set_sortColumn(e.get_sortColumn())
                GridView1.set_sortOrder(e.get_sortOrder());
                Pager1.set_pageIndex(0); // need to reset the page index as sorting is changed
                loadCustomers();
            }

            function LoadOrders(CustomerId) {

               // debugger;

                var sortColumn = GridView2.get_sortColumn();
                var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, CustomerId, loadchildGridView);
            }

            function loadchildGridView(result) {
               // debugger;
                Pager2.set_recordCount(result.Total);
                GridView2.set_dataSource(result.Rows);
                GridView2.dataBind();
            }
            function BindChildGrid(id, create_row) {
                var sortColumn = GridView2.get_sortColumn();
                var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, id, loadNestedGridView);

                var tableRef = $get('<%= GridView1.ClientID %>');
                //insert a new row
                var row = create_row;
                //  var row = evt.target.parentNode;
                var newRow = tableRef.insertRow(row.rowIndex + 1);
                // Insert a cell in the row at index 0
                var td1 = document.createElement('td');
                var td2 = document.createElement('td');
                newRow.appendChild(td1);
                newRow.appendChild(td2);
                var newCell = newRow.insertCell(2);
                newCell.colSpan = GridView1.get_columns().length;
                var nestedDiv = $get("nested");
                newCell.appendChild(_nestedDiv);
            }
            function showNested(evt, context) {
                debugger;
                //alert('hai');
                if (_sImgId == null) {
                    var sortColumn = GridView2.get_sortColumn();
                    var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                    var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                    DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, context[0].id, loadNestedGridView);

                    var tableRef = $get('<%= GridView1.ClientID %>');
                    //insert a new row
                    var row = evt.target.parentNode.parentNode;
                    //  var row = evt.target.parentNode;
                    var newRow = tableRef.insertRow(row.rowIndex + 1);
                    // Insert a cell in the row at index 0
                    var td1 = document.createElement('td');
                    var td2 = document.createElement('td');
                    newRow.appendChild(td1);
                    newRow.appendChild(td2);
                    var newCell = newRow.insertCell(2);
                    newCell.colSpan = GridView1.get_columns().length;

                    _sObj = context[0].id;
                    _sImgId = context[1].imgId;
                    _row = context[2].rowid;
                    _childPage = 1;
                    //_nestedDiv = $get("nested");

                    newCell.appendChild(_nestedDiv);
                }
                else {
                    if (_sImgId != context[1].imgId && _childPage == 1) {
                        expandcollapse(_sImgId);
                    }

                    var sortColumn = GridView2.get_sortColumn();
                    var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                    var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                    DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, context[0].id, loadNestedGridView);

                    var tableRef = $get('<%= GridView1.ClientID %>');
                    //insert a new row
                    var row = evt.target.parentNode.parentNode;
                    //  var row = evt.target.parentNode;
                    var newRow = tableRef.insertRow(row.rowIndex + 1);
                    // Insert a cell in the row at index 0
                    var td1 = document.createElement('td');
                    var td2 = document.createElement('td');
                    newRow.appendChild(td1);
                    newRow.appendChild(td2);
                    var newCell = newRow.insertCell(2);
                    newCell.colSpan = GridView1.get_columns().length;

                    _sObj = context[0].id;
                    _sImgId = context[1].imgId;
                    _row = context[2].rowid;
                    _childPage = 1;
                    //_nestedDiv = $get("nested");
                    newCell.appendChild(_nestedDiv);
                }
            }

            function loadNestedGridView(result) {
              //  debugger;
                if (result != null) {
                    Pager2.set_recordCount(result.Total);
                    GridView2.set_dataSource(result.Rows);
                    GridView2.dataBind();
                    var img = _gridView._element.document.getElementById(_sImgId);

                    if (_gridView._element.document.getElementById('nested').style.display == "none") {
                        _gridView._element.document.getElementById('nested').style.display = "block";
                        if (_row == 'alt') {
                            img.src = "Images/minus.gif";
                        }
                        else {
                            img.src = "Images/minus.gif";
                        }
                        img.alt = "Close to view other Customers";
                    }
                    else {
                        _gridView._element.document.getElementById('nested').style.display = "none";
                        if (_row == 'alt') {
                            _sImgId = null;
                            img.src = "Images/plus.gif";
                        }
                        else {
                            _sImgId = null;
                            img.src = "Images/plus.gif";
                        }
                        img.alt = "Expand to show Orders";
                    }
                }
                else {
                    _sImgId = null;
                }
            }

            function onRowDataBound(sender, e) {

                var row = e.get_row(); //.get_rowIndex()
                if (row.get_isDataRowType()) {
                    var rIndex = row.get_rowIndex();
                    var id = GridView1.get_dataKeys()[rIndex];
                    var context = new Array();
                    context[0] = { id: id };

                    //create function callback so we can pass the parent id           
                    var callback = Function.createCallback(showNested, context);
                    //  alert(rIndex);
                    var imgrow = row.findControl('imgdiv');
                    if (imgrow) {
                        $addHandler(imgrow, "click", callback);
                        context[1] = { imgId: imgrow.id };
                        context[2] = { rowid: row };
                    }
                    var create_row = row._container;
                    //BindChildGrid(id,create_row);
                }
                //if(imgrow)
                // imgrow.onclick = function () {expandcollapse(row,imgrow.id)};
            }

            function pageChanged(sender, e) {
              //  debugger;
                Pager1.set_pageIndex(e.get_newPageIndex());
                _sImgId = null;
                loadCustomers();
            }

            //***************GirdView1 Events *****************//
            //***************GirdView2 Events *****************//

            function onRowDataBound_2(sender, e) {
            }

            function onSortCommand_2(sender, e) {
               // debugger;
                GridView2.set_sortColumn(e.get_sortColumn())
                GridView2.set_sortOrder(e.get_sortOrder());
                Pager2.set_pageIndex(0); // need to reset the page index as sorting is changed
                LoadOrders(_sObj);
            }
            function pageChanged_2(sender, e) {
               // debugger;
                Pager2.set_pageIndex(e.get_newPageIndex());
                LoadOrders(_sObj);
            }
            //***************GirdView2 Events *****************//
            function onColumnsLoaded(sender, e) {
                loadCustomers();
            }
            function onColumnDragStart(sender, e) {
                var column = e.get_column();
                // writeMessage(String.format('{0} Column Drag Started<br/>', column.get_headerText()));
            }

            function onColumnDropped(sender, e) {

                _gridView.saveColumnsToProfile('DndColumns');
                var column = e.get_column();
                //writeMessage(String.format('{0} Column Dropped in index {1} from index {2}<br/>', column.get_headerText(), e.get_newIndex(), e.get_oldIndex()));
                // GridView1.saveColumnsToProfile('DndColumns');
            }
            function onColumnDragStart_2(sender, e) {
                var column = e.get_column();
                // writeMessage(String.format('{0} Column Drag Started<br/>', column.get_headerText()));
            }
            function onColumnDropped_2(sender, e) {

                _gridView2.saveColumnsToProfile('DndColumns');
                var column = e.get_column();
                //writeMessage(String.format('{0} Column Dropped in index {1} from index {2}<br/>', column.get_headerText(), e.get_newIndex(), e.get_oldIndex()));
                // GridView1.saveColumnsToProfile('DndColumns');
            }

            function writeMessage(message) {
                $get('divEvents').innerHTML += message;
            }
           

        </script>

    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="TheScriptManager" runat="server" EnablePageMethods="false"
            EnablePartialRendering="false">
            <Services>
                <asp:ServiceReference Path="~/DataService.asmx" />
            </Services>
            <Scripts>
                <asp:ScriptReference Path="~/PreviewScripts/PreviewScript.js" />
                <asp:ScriptReference Path="~/PreviewScripts/PreviewDragDrop.js" />
                <asp:ScriptReference Path="~/PreviewScripts/PreviewGlitz.js" />
                <%--<asp:ScriptReference Path="~/PreviewScripts/Common.js" />
                <asp:ScriptReference Path="~/PreviewScripts/BaseScripts.js" />
                <asp:ScriptReference Path="~/PreviewScripts/Timer.js" />
                <asp:ScriptReference Path="~/PreviewScripts/NumericUpDownBehavior.js" />
                <asp:ScriptReference Path="~/PreviewScripts/FilteredTextBoxBehavior.js" />
                <asp:ScriptReference Path="~/PreviewScripts/DragDropScripts.js" />
                <asp:ScriptReference Path="~/PreviewScripts/FloatingBehavior.js" />--%>
            </Scripts>
        </asp:ScriptManager>
        <AjaxData:GridView ID="GridView1" runat="server" CssClass="DataWebControlStyle" CellSpacing="0"
            CellPadding="3" SortColumn="ContactName" DataKeyName="ID" SortOrderAscendingImageUrl="~/Images/up.gif"
            SortOrderDescendingImageUrl="~/Images/dn.gif" ColumnDragStartEvent="onColumnDragStart"
           
            ColumnDroppedEvent="onColumnDropped" SortCommandEvent="onSortCommand" RowDataBoundEvent="onRowDataBound"
            Font-Names="Verdana" Font-Size="X-Small" Width="453px">
            <RowStyle BackColor="Gainsboro" />
            <AlternatingRowStyle BackColor="White" />
            <HeaderStyle BackColor="ActiveBorder" ForeColor="White" />
            <FooterStyle BackColor="White" />
            <Columns>
                <AjaxData:GridViewTemplateColumn ColumnID="1" AllowDragAndDrop="false">
                    <ItemTemplate>
                        <img id="imgdiv" alt="Click to show/hide Orders for Customer" width="9px" border="0"
                            src="Images/plus.gif" />
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
                <AjaxData:GridViewTemplateColumn ColumnID="2" AllowDragAndDrop="false">
                    <ItemTemplate>
                        <input type="checkbox" id="chekId" visible="true" />
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
                <AjaxData:GridViewBoundColumn HeaderText="ID" DataField="ID" AllowDragAndDrop="true"
                    SortField="CustomerID" ColumnID="3">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="CustomerName" DataField="ContactName" AllowDragAndDrop="true"
                    SortField="ContactName" ColumnID="4">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="ContactTitle" AllowDragAndDrop="true" DataField="ContactTitle"
                    SortField="ContactTitle" ColumnID="5">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="Address" DataField="Address" AllowDragAndDrop="true"
                    SortField="Address" ColumnID="6">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="Country" DataField="Country" AllowDragAndDrop="true"
                    SortField="Country" ColumnID="7">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewTemplateColumn ColumnID="8" AllowDragAndDrop="true">
                    <ItemTemplate>
                        <span></span>
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
                <AjaxData:GridViewCommandColumn ShowEditButton="True" AllowDragAndDrop="true" ColumnID="9"
                    ShowCancelButton="False" />
            </Columns>
        </AjaxData:GridView>
        <AjaxData:Pager ID="Pager1" Width="458px" runat="server" CssClass="PagerRowStyle"
            CurrentPageStyle-CssClass="PagerCurrentPage" OtherPageStyle-CssClass="PagerOtherPage"
            PageChangedEvent="pageChanged">
            <CurrentPageStyle CssClass="PagerCurrentPage"></CurrentPageStyle>
            <OtherPageStyle CssClass="PagerOtherPage"></OtherPageStyle>
        </AjaxData:Pager>
        <div id="nested" style="left: 20px; display: none">
            <tr>
                <td colspan="100%">
                    <AjaxData:GridView ID="GridView2" Width="450px" Font-Size="X-Small" Font-Names="Verdana"
                        runat="server" SortColumn="OrderID" ShowFooter="true" CellSpacing="0" CellPadding="3"
                        SortOrderAscendingImageUrl="~/Images/up.gif" SortOrderDescendingImageUrl="~/Images/dn.gif"
                        SortCommandEvent="onSortCommand_2" RowDataBoundEvent="onRowDataBound_2" ColumnDragStartEvent="onColumnDragStart_2"
                        ColumnDroppedEvent="onColumnDropped_2" Height="112px">
                        <RowStyle BackColor="Gainsboro" />
                        <AlternatingRowStyle BackColor="White" />
                        <HeaderStyle BackColor="ActiveBorder" ForeColor="White" />
                        <FooterStyle BackColor="White" />
                        <Columns>
                            <AjaxData:GridViewTemplateColumn ColumnID="1" AllowDragAndDrop="true">
                                <ItemTemplate>
                                    <input type="checkbox" id="chekId2" visible="true" />
                                </ItemTemplate>
                            </AjaxData:GridViewTemplateColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="OrderID" AllowDragAndDrop="true" DataField="OrderID"
                                SortField="OrderID" ColumnID="1">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="Freight" AllowDragAndDrop="true" DataField="Freight"
                                SortField="Freight" ColumnID="2">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="ShipName" AllowDragAndDrop="true" DataField="ShipName"
                                SortField="ShipName" ColumnID="3">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="ShipAddress" AllowDragAndDrop="true" DataField="ShipAddress"
                                SortField="ShipAddress" ColumnID="4">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewCommandColumn HeaderText="Edit" ShowEditButton="True" AllowDragAndDrop="False"
                                ColumnID="5" ShowCancelButton="False">
                            </AjaxData:GridViewCommandColumn>
                        </Columns>
                    </AjaxData:GridView>
                </td>
            </tr>
            <tr>
                <td>
                    <AjaxData:Pager ID="Pager2" runat="server" CssClass="PagerRowStyle" PageSize="5"
                        CurrentPageStyle-CssClass="PagerCurrentPage" Height="20px" OtherPageStyle-CssClass="PagerOtherPage"
                        PageChangedEvent="pageChanged_2">
                        <CurrentPageStyle CssClass="PagerCurrentPage"></CurrentPageStyle>
                        <OtherPageStyle CssClass="PagerOtherPage"></OtherPageStyle>
                    </AjaxData:Pager>
                </td>
            </tr>
        </div>
        </form>
    </body>
    </html>

    //************Ended...AjaxGrid.aspx***************************************//

     

     

     


     

  • 01-12-2009 9:44 AM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

     ///***************************data service.cs************************************///


    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Web;
    using System.Collections;
    using System.Collections.Generic;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Web.Script.Services;


    /// <summary>
    /// Summary description for WebService
    /// </summary>
    public abstract class BaseEntity
    {
    }
    public class Employee : BaseEntity
    {
        private int _id;
        private string _lastName = string.Empty;
        private string _firstName = string.Empty;
        private DateTime _birthDate;
        private DateTime _hireDate;
        private string _address = string.Empty;
        private string _city = string.Empty;
        private string _postalCode = string.Empty;
        private string _country = string.Empty;
        private string _phone = string.Empty;

        public int ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }

        public string LastName
        {
            get
            {
                return _lastName;
            }
            set
            {
                _lastName = value;
            }
        }

        public string FirstName
        {
            get
            {
                return _firstName;
            }
            set
            {
                _firstName = value;
            }
        }

        public DateTime BirthDate
        {
            get
            {
                return _birthDate;
            }
            set
            {
                _birthDate = value;
            }
        }

        public DateTime HireDate
        {
            get
            {
                return _hireDate;
            }
            set
            {
                _hireDate = value;
            }
        }

        public string Address
        {
            get
            {
                return _address;
            }
            set
            {
                _address = value;
            }
        }

        public string City
        {
            get
            {
                return _city;
            }
            set
            {
                _city = value;
            }
        }

        public string PostalCode
        {
            get
            {
                return _postalCode;
            }
            set
            {
                _postalCode = value;
            }
        }

        public string Country
        {
            get
            {
                return _country;
            }
            set
            {
                _country = value;
            }
        }

        public string Phone
        {
            get
            {
                return _phone;
            }
            set
            {
                _phone = value;
            }
        }
    }
    public class Supplier : BaseEntity
    {
        private int _id;
        private string _company = string.Empty;
        private string _contactName = string.Empty;
        private string _contactTitle = string.Empty;
        private string _address = string.Empty;
        private string _city = string.Empty;
        private string _region = string.Empty;
        private string _postalCode = string.Empty;
        private string _country = string.Empty;
        private string _phone = string.Empty;
        private string _fax = string.Empty;
        private bool _active;

        public int ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }

        public string Company
        {
            get
            {
                return _company;
            }
            set
            {
                _company = value;
            }
        }

        public string ContactName
        {
            get
            {
                return _contactName;
            }
            set
            {
                _contactName = value;
            }
        }

        public string ContactTitle
        {
            get
            {
                return _contactTitle;
            }
            set
            {
                _contactTitle = value;
            }
        }

        public string Address
        {
            get
            {
                return _address;
            }
            set
            {
                _address = value;
            }
        }

        public string City
        {
            get
            {
                return _city;
            }
            set
            {
                _city = value;
            }
        }

        public string Region
        {
            get
            {
                return _region;
            }
            set
            {
                _region = value;
            }
        }

        public string PostalCode
        {
            get
            {
                return _postalCode;
            }
            set
            {
                _postalCode = value;
            }
        }

        public string Country
        {
            get
            {
                return _country;
            }
            set
            {
                _country = value;
            }
        }

        public string Phone
        {
            get
            {
                return _phone;
            }
            set
            {
                _phone = value;
            }
        }

        public string Fax
        {
            get
            {
                return _fax;
            }
            set
            {
                _fax = value;
            }
        }

        public bool Active
        {
            get
            {
                return _active;
            }
            set
            {
                _active = value;
            }
        }
    }
    public class Category : BaseEntity
    {
        private int _id;
        private string _name = string.Empty;

        public int ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }

        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
    }
    public class Customer : BaseEntity
    {
        private string _id;
        private string _company = string.Empty;
        private string _contactName = string.Empty;
        private string _contactTitle = string.Empty;
        private string _address = string.Empty;
        private string _city = string.Empty;
        private string _postalCode = string.Empty;
        private string _country = string.Empty;
        private string _phone = string.Empty;

        public string ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }

        public string Company
        {
            get
            {
                return _company;
            }
            set
            {
                _company = value;
            }
        }

        public string ContactName
        {
            get
            {
                return _contactName;
            }
            set
            {
                _contactName = value;
            }
        }

        public string ContactTitle
        {
            get
            {
                return _contactTitle;
            }
            set
            {
                _contactTitle = value;
            }
        }

        public string Address
        {
            get
            {
                return _address;
            }
            set
            {
                _address = value;
            }
        }

        public string City
        {
            get
            {
                return _city;
            }
            set
            {
                _city = value;
            }
        }

        public string PostalCode
        {
            get
            {
                return _postalCode;
            }
            set
            {
                _postalCode = value;
            }
        }

        public string Country
        {
            get
            {
                return _country;
            }
            set
            {
                _country = value;
            }
        }

        public string Phone
        {
            get
            {
                return _phone;
            }
            set
            {
                _phone = value;
            }
        }
    }
    public class Product : BaseEntity
    {
        private int _id;
        private string _name = string.Empty;
        private int _categoryID;
        private string _categoryName = string.Empty;
        private int _supplierID;
        private string _supplierName = string.Empty;
        private string _quantityPerUnit = string.Empty;
        private decimal _unitPrice;
        private short _unitsInStock;
        private short _unitsOnOrder;
        private bool _discontinued;

        public int ID
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }

        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }

        public int CategoryID
        {
            get
            {
                return _categoryID;
            }
            set
            {
                _categoryID = value;
            }
        }

        public string CategoryName
        {
            get
            {
                return _categoryName;
            }
            set
            {
                _categoryName = value;
            }
        }

        public int SupplierID
        {
            get
            {
                return _supplierID;
            }
            set
            {
                _supplierID = value;
            }
        }

        public string SupplierName
        {
            get
            {
                return _supplierName;
            }
            set
            {
                _supplierName = value;
            }
        }

        public string QuantityPerUnit
        {
            get
            {
                return _quantityPerUnit;
            }
            set
            {
                _quantityPerUnit = value;
            }
        }

        public decimal UnitPrice
        {
            get
            {
                return _unitPrice;
            }
            set
            {
                _unitPrice = value;
            }
        }

        public short UnitsInStock
        {
            get
            {
                return _unitsInStock;
            }
            set
            {
                _unitsInStock = value;
            }
        }

        public short UnitsOnOrder
        {
            get
            {
                return _unitsOnOrder;
            }
            set
            {
                _unitsOnOrder = value;
            }
        }

        public bool Discontinued
        {
            get
            {
                return _discontinued;
            }
            set
            {
                _discontinued = value;
            }
        }
    }
    public class Orders : BaseEntity
    {
        private int _orderid;
        private decimal _freight;
        private string _shipname=string.Empty;
        private string _shipaddress = string.Empty;
       
        public int OrderID
        {
            get
            {
                return _orderid;
            }
            set
            {
                _orderid = value;
            }
        }

        public decimal Freight
        {
            get
            {
                return _freight;
            }
            set
            {
                _freight = value;
            }
        }

        public string ShipName
        {
            get
            {
                return _shipname;
            }
            set
            {
                _shipname = value;
            }
        }

        public string ShipAddress
        {
            get
            {
                return _shipaddress;
            }
            set
            {
                _shipaddress = value;
            }
        }

     
    }

    public class PagedResult<T> where T : BaseEntity
    {
        private int _total;
        private List<T> _rows;

        public int Total
        {
            get
            {
                return _total;
            }
            set
            {
                _total = value;
            }
        }

        public List<T> Rows
        {
            get
            {
                return _rows;
            }
            set
            {
                _rows = value;
            }
        }
    }

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService()]
    public class DataService : System.Web.Services.WebService
    {
        private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
        public DataService()
        {
        }
        [WebMethod]
        public string HelloWorld() {
            return "Hello World";
        }

        [WebMethod()]
        public PagedResult<Product> GetProductList(int start, int max, string sortColumn, string sortOrder)
        {
            if (max == 0)
            {
                max = 10;
            }

            if (string.IsNullOrEmpty(sortColumn) || (string.Compare(sortColumn, "Name", true) == 0))
            {
                sortColumn = "ProductName";
            }
            else if (string.Compare(sortColumn, "SupplierName") == 0)
            {
                sortColumn = "CompanyName";
            }

            if (string.IsNullOrEmpty(sortOrder))
            {
                sortOrder = "ASC";
            }

            const string SQL = "SELECT  [ProductID],                                                   " +
                               "        [ProductName],                                                 " +
                               "        [CategoryID],                                                  " +
                               "        [CategoryName],                                                " +
                               "        [SupplierID],                                                  " +
                               "        [SupplierName],                                                " +
                               "        [QuantityPerUnit],                                             " +
                               "        [UnitPrice],                                                   " +
                               "        [UnitsInStock],                                                " +
                               "        [UnitsOnOrder],                                                " +
                               "        [Discontinued]                                                 " +
                               "FROM                                                                   " +
                               "     (                                                                 " +
                               "        SELECT  [P].[ProductID],                                       " +
                               "                [P].[ProductName],                                     " +
                               "                Coffee.[CategoryID],                                      " +
                               "                Coffee.[CategoryName] AS [CategoryName],                  " +
                               "                Sleep.[SupplierID],                                      " +
                               "                Sleep.[CompanyName] AS [SupplierName],                   " +
                               "                [P].[QuantityPerUnit],                                 " +
                               "                [P].[UnitPrice],                                       " +
                               "                [P].[UnitsInStock],                                    " +
                               "                [P].[UnitsOnOrder],                                    " +
                               "                [P].[Discontinued],                                    " +
                               "                ROW_NUMBER() OVER (ORDER BY [{0}] {1}) AS [RowIndex]   " +
                               "         FROM                                                          " +
                               "                [Products] AS [P]                                      " +
                               "         LEFT OUTER JOIN                                               " +
                               "                [Categories] AS Coffee                                    " +
                               "         ON     [P].[CategoryID] = Coffee.[CategoryID]                    " +
                               "         LEFT OUTER JOIN                                               " +
                               "                [Suppliers] AS Sleep                                     " +
                               "         ON     [P].[SupplierID] = Sleep.[SupplierID]                    " +
                               "     ) AS [ProductWithRowIndex]                                        " +
                               "WHERE                                                                  " +
                               "        ([RowIndex] > {2})                                             " +
                               "AND     ([RowIndex] <= ({2} + {3}))                                    " +
                               "                                                                       " +
                               "SELECT COUNT(ProductID)                                                " +
                               "FROM                                                                   " +
                               "    [Products]                                                         ";

            int total = 0;
            List<Product> list = new List<Product>();

            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = string.Format(SQL, sortColumn, sortOrder, start, max);

                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Product p = BuildProduct(rdr);

                            list.Add(p);
                        }

                        if ((rdr.NextResult()) && (rdr.Read()))
                        {
                            total = rdr.GetInt32(0);
                        }
                    }
                }
            }

            if ((list.Count == 0) || (total == 0))
            {
                return null;
            }

            PagedResult<Product> result = new PagedResult<Product>();

            result.Rows = list;
            result.Total = total;

            return result;
        }
        [WebMethod()]

        public PagedResult<Customer> GetCustomerList(int start, int max, string sortColumn, string sortOrder)
        {
            if (max == 0)
            {
                max = 10;
            }

            if (string.IsNullOrEmpty(sortColumn) || (string.Compare(sortColumn, "Company", true) == 0))
            {
                sortColumn = "CompanyName";
            }

            if (string.IsNullOrEmpty(sortOrder))
            {
                sortOrder = "ASC";
            }

            const string SQL = "SELECT  [CustomerID],                                                  " +
                               "        [CompanyName],                                                 " +
                               "        [ContactName],                                                 " +
                               "        [ContactTitle],                                                " +
                               "        [Address],                                                     " +
                               "        [City],                                                        " +
                               "        [PostalCode],                                                  " +
                               "        [Country],                                                     " +
                               "        [Phone]                                                        " +
                               "FROM                                                                   " +
                               "     (                                                                 " +
                               "        SELECT  [CustomerID],                                          " +
                               "                [CompanyName],                                         " +
                               "                [ContactName],                                         " +
                               "                [ContactTitle],                                        " +
                               "                [Address],                                             " +
                               "                [City],                                                " +
                               "                [PostalCode],                                          " +
                               "                [Country],                                             " +
                               "                [Phone],                                               " +
                               "                ROW_NUMBER() OVER (ORDER BY [{0}] {1}) AS [RowIndex]   " +
                               "         FROM                                                          " +
                               "                [Customers]                                            " +
                               "     ) AS [CustomerWithRowIndex]                                       " +
                               "WHERE                                                                  " +
                               "        ([RowIndex] > {2})                                             " +
                               "AND     ([RowIndex] <= ({2} + {3}))                                    " +
                               "                                                                       " +
                               "SELECT COUNT(CustomerID)                                               " +
                               "FROM                                                                   " +
                               "    [Customers]                                                        ";

            int total = 0;
            List<Customer> list = new List<Customer>();

            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = string.Format(SQL, sortColumn, sortOrder, start, max);

                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Customer c = BuildCustomer(rdr);

                            list.Add(c);
                        }

                        if ((rdr.NextResult()) && (rdr.Read()))
                        {
                            total = rdr.GetInt32(0);
                        }
                    }
                }
            }

            if ((list.Count == 0) || (total == 0))
            {
                return null;
            }

            PagedResult<Customer> result = new PagedResult<Customer>();

            result.Rows = list;
            result.Total = total;

            return result;
        }
        [WebMethod()]
        public Supplier[ GetAllSupplierById(string id)
        {
            List<Supplier> list = new List<Supplier>();

            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = "SELECT [SupplierID],   " +
                                    "       [CompanyName],  " +
                                    "       [ContactName],  " +
                                    "       [ContactTitle], " +
                                    "       [Address],      " +
                                    "       [City],         " +
                                    "       [Region],       " +
                                    "       [PostalCode],   " +
                                    "       [Country],      " +
                                    "       [Phone],        " +
                                    "       [Fax]           " +
                                    "FROM                   " +
                                    "   [Suppliers]         " +
                                    " where [SupplierID] =  " + id;

                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Supplier s = BuildSupplier(rdr);

                            list.Add(s);
                        }
                    }
                }
            }

            if (list.Count == 0)
            {
                return null;
            }

            for (int i = 0; i < list.Count; i++)
            {
                if (i == 0)
                {
                    //list. = true;
                }
                else
                {
                    //list.Active = ((i % 2) == 0);
                }
            }

            return list.ToArray();
        }

        [WebMethod()]
        public Supplier[ GetAllSupplier()
        {
            List<Supplier> list = new List<Supplier>();

            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = "SELECT [SupplierID],   " +
                                        "       [CompanyName],  " +
                                        "       [ContactName],  " +
                                        "       [ContactTitle], " +
                                        "       [Address],      " +
                                        "       [City],         " +
                                        "       [Region],       " +
                                        "       [PostalCode],   " +
                                        "       [Country],      " +
                                        "       [Phone],        " +
                                        "       [Fax]           " +
                                        "FROM                   " +
                                        "   [Suppliers]         " +
                                        "ORDER BY [CompanyName] ASC";

                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Supplier s = BuildSupplier(rdr);

                            list.Add(s);
                        }
                    }
                }
            }

            if (list.Count == 0)
            {
                return null;
            }

            for (int i = 0; i < list.Count; i++)
            {
                if (i == 0)
                {
                    listIdea.Active = true;
                }
                else
                {
                    listIdea.Active = ((i % 2) == 0);
                }
            }

            return list.ToArray();
        }

        [WebMethod()]
        public PagedResult<Orders> GetOrdersList(int start, int max, string sortColumn, string sortOrder,string CustID)
        {
            if (max == 0)
            {
                max = 10;
            }

            if (string.IsNullOrEmpty(sortColumn) || (string.Compare(sortColumn, "OrderID", true) == 0))
            {
                sortColumn = "OrderID";
            }

            if (string.IsNullOrEmpty(sortOrder))
            {
                sortOrder = "ASC";
            }

            const string SQL = "SELECT  [OrderID],                                                  " +
                               "        [Freight],                                                 " +
                               "        [ShipName],                                                 " +
                               "        [ShipAddress]                                                " +
                             
                               "FROM                                                                   " +
                               "     (                                                                 " +
                               "      SELECT  [OrderID],                                                  " +
                               "        [Freight],                                                 " +
                               "        [ShipName],                                                 " +
                               "        [ShipAddress],                                               " +
                               "                ROW_NUMBER() OVER (ORDER BY [{0}] {1}) AS [RowIndex]   " +
                               "         FROM                                                          " +
                               "                [Orders]  WHERE [CustomerID]='{4}'                                                 " +
                               "     ) AS [OrdersWithRowIndex]                                       " +
                               "WHERE                                                                  " +
                              
                               "        ([RowIndex] > {2})                                             " +
                               "AND     ([RowIndex] <= ({2} + {3}))                                    " +
                               "                                                                       " +
                               "SELECT COUNT(OrderID)                                               " +
                               "FROM                                                                   " +
                               "    [Orders]  WHERE [CustomerID]='{4}'                                                       ";

            int total = 0;
            List<Orders> list = new List<Orders>();

            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                  
                        cmd.CommandText = string.Format(SQL, sortColumn, sortOrder, start, max, CustID);

                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Orders c = BuildOrders(rdr);

                            list.Add(c);
                        }

                        if ((rdr.NextResult()) && (rdr.Read()))
                        {
                            total = rdr.GetInt32(0);
                        }
                    }
                }
            }

            if ((list.Count == 0) || (total == 0))
            {
                return null;
            }

            PagedResult<Orders> result = new PagedResult<Orders>();

            result.Rows = list;
            result.Total = total;

            return result;
        }
        [WebMethod()]
        public Customer[ GetAllCustomers()
        {

            List<Customer> list = new List<Customer>();
            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = "SELECT  [CustomerID],                                                  " +
                                       "        [CompanyName],                                                 " +
                                       "        [ContactName],                                                 " +
                                       "        [ContactTitle],                                                " +
                                       "        [Address],                                                     " +
                                       "        [City],                                                        " +
                                       "        [PostalCode],                                                  " +
                                       "        [Country],                                                     " +
                                       "        [Phone]                                                        " +
                                       "        From                                                         "+
                                        "   [Customers]                                                        " +
                                        "    ORDER BY [CompanyName] ASC                                         ";
                   

                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Customer c = BuildCustomer(rdr);

                            list.Add(c);
                        }
                    }
                }
            }
            if (list.Count == 0)
            {
                return null;
            }

            //for (int i = 0; i < list.Count; i++)
            //{
            //    if (i == 0)
            //    {
            //        listIdea.Active = true;
            //    }
            //    else
            //    {
            //        listIdea.Active = ((i % 2) == 0);
            //    }
            //}

            return list.ToArray();

        }

        public Product[ GetAllProducts()
        {

            List<Product> list = new List<Product>();
            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = "SELECT  [ProductID],                                                   " +
                               "        [ProductName],                                                 " +
                               "        [CategoryID],                                                  " +
                              
                               "        [SupplierID],                                                  " +
                            
                               "        [QuantityPerUnit],                                             " +
                               "        [UnitPrice],                                                   " +
                               "        [UnitsInStock],                                                " +
                               "        [UnitsOnOrder],                                                " +
                               "        [Discontinued]                                                 " +
                               "       FROM                                                                   " +
                               "    [Products]                                                         "+

                                 "    ORDER BY [ProductName] ASC                                    ";

                  


                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Product c = BuildProduct(rdr);

                            list.Add(c);
                        }
                    }
                }
            }
            if (list.Count == 0)
            {
                return null;
            }

            //for (int i = 0; i < list.Count; i++)
            //{
            //    if (i == 0)
            //    {
            //        listIdea.Active = true;
            //    }
            //    else
            //    {
            //        listIdea.Active = ((i % 2) == 0);
            //    }
            //}

            return list.ToArray();

        }

        public Orders[ GetAllOrders()
        {

            List<Orders> list = new List<Orders>();
            using (IDbConnection cnn = CreateConnection())
            {
                using (IDbCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = "SELECT  [OrderID],                                           " +
                               "        [Freight],                                                  " +
                               "        [ShipName],                                                  " +
                               "        [ShipAddress]                                                " +
                               "         FROM                                                        "+
                               "        [Orders]                                                          " +
                                 "    ORDER BY [OrderID] ASC                                    ";

     


                    using (IDataReader rdr = cmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Orders ord = BuildOrders(rdr);

                            list.Add(ord);
                        }
                    }
                }
            }
            if (list.Count == 0)
            {
                return null;
            }

            //for (int i = 0; i < list.Count; i++)
            //{
            //    if (i == 0)
            //    {
            //        listIdea.Active = true;
            //    }
            //    else
            //    {
            //        listIdea.Active = ((i % 2) == 0);
            //    }
            //}

            return list.ToArray();

        }


        private static Supplier BuildSupplier(IDataReader reader)
        {
            Supplier supplier = new Supplier();

            supplier.ID = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
            supplier.Company = reader.IsDBNull(1) ? string.Empty : reader.GetString(1).Trim();
            supplier.ContactName = reader.IsDBNull(2) ? string.Empty : reader.GetString(2).Trim();
            supplier.ContactTitle = reader.IsDBNull(3) ? string.Empty : reader.GetString(3).Trim();
            supplier.Address = reader.IsDBNull(4) ? string.Empty : reader.GetString(4).Trim();
            supplier.City = reader.IsDBNull(5) ? string.Empty : reader.GetString(5).Trim();
            supplier.Region = reader.IsDBNull(6) ? string.Empty : reader.GetString(6).Trim();
            supplier.PostalCode = reader.IsDBNull(7) ? string.Empty : reader.GetString(7).Trim();
            supplier.Country = reader.IsDBNull(8) ? string.Empty : reader.GetString(8).Trim();
            supplier.Phone = reader.IsDBNull(9) ? string.Empty : reader.GetString(9).Trim();
            supplier.Fax = reader.IsDBNull(10) ? string.Empty : reader.GetString(10).Trim();

            return supplier;
        }

        private static Employee BuildEmployee(IDataReader reader)
        {
            Employee employee = new Employee();

            employee.ID = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
            employee.LastName = reader.IsDBNull(1) ? string.Empty : reader.GetString(1).Trim();
            employee.FirstName = reader.IsDBNull(2) ? string.Empty : reader.GetString(2).Trim();
            employee.BirthDate = reader.IsDBNull(3) ? DateTime.MinValue : reader.GetDateTime(3).ToLocalTime();
            employee.HireDate = reader.IsDBNull(4) ? DateTime.MinValue : reader.GetDateTime(4).ToLocalTime();
            employee.Address = reader.IsDBNull(5) ? string.Empty : reader.GetString(5).Trim();
            employee.City = reader.IsDBNull(6) ? string.Empty : reader.GetString(6).Trim();
            employee.PostalCode = reader.IsDBNull(7) ? string.Empty : reader.GetString(7).Trim();
            employee.Country = reader.IsDBNull(8) ? string.Empty : reader.GetString(8).Trim();
            employee.Phone = reader.IsDBNull(9) ? string.Empty : reader.GetString(9).Trim();

            return employee;
        }

        private static Customer BuildCustomer(IDataReader reader)
        {
            Customer customer = new Customer();

            customer.ID = reader.IsDBNull(0) ? string.Empty : reader.GetString(0).Trim();
            customer.Company = reader.IsDBNull(1) ? string.Empty : reader.GetString(1).Trim();
            customer.ContactName = reader.IsDBNull(2) ? string.Empty : reader.GetString(2).Trim();
            customer.ContactTitle = reader.IsDBNull(3) ? string.Empty : reader.GetString(3).Trim();
            customer.Address = reader.IsDBNull(4) ? string.Empty : reader.GetString(4).Trim();
            customer.City = reader.IsDBNull(5) ? string.Empty : reader.GetString(5).Trim();
            customer.PostalCode = reader.IsDBNull(6) ? string.Empty : reader.GetString(6).Trim();
            customer.Country = reader.IsDBNull(7) ? string.Empty : reader.GetString(7).Trim();
            customer.Phone = reader.IsDBNull(8) ? string.Empty : reader.GetString(8).Trim();
            return customer;
        }

        private static Product BuildProduct(IDataReader reader)
        {
            Product product = new Product();
            product.ID = reader.IsDBNull(0) ? int.MinValue : reader.GetInt32(0);
            product.Name = reader.IsDBNull(1) ? string.Empty : reader.GetString(1).Trim();
            product.CategoryID = reader.IsDBNull(2) ? int.MinValue : reader.GetInt32(2);
            //product.CategoryName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
            product.SupplierID = reader.IsDBNull(3) ? int.MinValue : reader.GetInt32(3);
           // product.SupplierName = reader.IsDBNull(5) ? string.Empty : reader.GetString(5);
            product.QuantityPerUnit = reader.IsDBNull(4) ? string.Empty : reader.GetString(4).Trim();
            product.UnitPrice = reader.IsDBNull(5) ? decimal.MinValue : reader.GetDecimal(5);
            product.UnitsInStock = reader.IsDBNull(6) ? short.MinValue : reader.GetInt16(6);
            product.UnitsOnOrder = reader.IsDBNull(7) ? short.MinValue : reader.GetInt16(7);
            product.Discontinued = reader.IsDBNull(8) ? false : reader.GetBoolean(8);

            return product;
        }

        private static Orders BuildOrders(IDataReader reader)
        {
            Orders order = new Orders();
            order.OrderID = reader.IsDBNull(0) ? int.MinValue : reader.GetInt32(0);
            order.Freight = reader.IsDBNull(1) ? decimal.MaxValue: reader.GetDecimal(1);
            order.ShipName = reader.IsDBNull(2) ? string.Empty : reader.GetString(2).Trim();
            order.ShipAddress = reader.IsDBNull(3) ? string.Empty : reader.GetString(3).Trim();
            return order;
        }

        private static IDbConnection CreateConnection()
        {
            IDbConnection cnn = new System.Data.SqlClient.SqlConnection(ConnectionString);
            cnn.Open();
            return cnn;
        }
    }

    ///****************************DataService.cs***************************************///

  • 01-12-2009 9:48 AM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

     

    ///*************************start AjaxGrid.aspx*********************************//

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxGrid.aspx.cs" Inherits="AjaxGrid" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
        <link href="StyleSheet.css" rel="stylesheet" type="text/css" />

        <script runat="server">
        </script>

        <script language="javascript" type="text/javascript">
           
            var _gridView;
            var _pager;
            var _gridView2;
            var _pager2;
            var _childPage = 0;
            var _row;
            var _childrows = null;
            var _sObj = null;
            var _sImgId = null;
            var _nestedDiv = null;

            function expandcollapse(row, imgid) {
               // debugger;
                _row = row;
                _gridView2 = null;

                var div = _gridView._element.document.getElementById(_sObj);
                var img = _gridView._element.document.getElementById(imgid);

                if (_gridView._element.document.getElementById('nested').style.display == "none") {
                    _gridView._element.document.getElementById('nested').style.display = "block";
                    if (_row == 'alt') {
                        img.src = "Images/minus.gif";
                    }
                    else {
                        img.src = "Images/minus.gif";
                    }
                    img.alt = "Close to view other Customers";
                }
                else {
                    _gridView._element.document.getElementById('nested').style.display = "none";
                    if (_row == 'alt') {
                        img.src = "Images/plus.gif";
                    }
                    else {
                        img.src = "Images/plus.gif";
                    }
                    img.alt = "Expand to show Orders";
                }

            }
            function expandcollapse(imgid) {
               // debugger;

                _gridView2 = null;
                _gridView = $find('<%= GridView1.ClientID %>');
                //var div = _gridView._element.document.getElementById(_sObj);
                var img = _gridView._element.document.getElementById(imgid);

                if (_gridView._element.document.getElementById('nested').style.display == "none") {
                    _gridView._element.document.getElementById('nested').style.display = "block";
                    if (_row == 'alt') {
                        img.src = "Images/minus.gif";
                    }
                    else {
                        img.src = "Images/minus.gif";
                    }
                    img.alt = "Close to view other Customers";
                }
                else {
                    _gridView._element.document.getElementById('nested').style.display = "none";
                    if (_row == 'alt') {
                        img.src = "Images/plus.gif";
                        Pager2.set_pageIndex(0);
                    }
                    else {
                        img.src = "Images/plus.gif";
                        Pager2.set_pageIndex(0);
                    }
                    img.alt = "Expand to show Orders";
                }

            }

            //***************GirdView1 Events *****************//
            function pageLoad(sender, e) {
               // debugger;
                _gridView = $find('<%= GridView1.ClientID %>');
                _pager = $find('<%= Pager1.ClientID %>');
                _gridView2 = $find('<%=GridView2.ClientID %>');
                _pager2 = $find('<%= Pager2.ClientID %>');
                _gridView.loadColumnsFromProfile('DndColumns');
                _gridView2.loadColumnsFromProfile('DndColumns');
                loadCustomers();
            }
            function loadCustomers() {
               // debugger;
                _nestedDiv = $get("nested");
                var sortColumn = GridView1.get_sortColumn();
                var sortOrder = (GridView1.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                var startIndex = (Pager1.get_pageIndex() * Pager1.get_pageSize());
                DataService.GetCustomerList(startIndex, Pager1.get_pageSize(), sortColumn, sortOrder, onLoadSuccess);

            }
            function onLoadSuccess(result) {
               // debugger;
                Pager1.set_recordCount(result.Total);
                GridView1.set_dataSource(result.Rows);
                GridView1.dataBind();
            }
            function onSortCommand(sender, e) {
                GridView1.set_sortColumn(e.get_sortColumn())
                GridView1.set_sortOrder(e.get_sortOrder());
                Pager1.set_pageIndex(0); // need to reset the page index as sorting is changed
                loadCustomers();
            }

            function LoadOrders(CustomerId) {

               // debugger;

                var sortColumn = GridView2.get_sortColumn();
                var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, CustomerId, loadchildGridView);
            }

            function loadchildGridView(result) {
               // debugger;
                Pager2.set_recordCount(result.Total);
                GridView2.set_dataSource(result.Rows);
                GridView2.dataBind();
            }
            function BindChildGrid(id, create_row) {
                var sortColumn = GridView2.get_sortColumn();
                var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, id, loadNestedGridView);

                var tableRef = $get('<%= GridView1.ClientID %>');
                //insert a new row
                var row = create_row;
                //  var row = evt.target.parentNode;
                var newRow = tableRef.insertRow(row.rowIndex + 1);
                // Insert a cell in the row at index 0
                var td1 = document.createElement('td');
                var td2 = document.createElement('td');
                newRow.appendChild(td1);
                newRow.appendChild(td2);
                var newCell = newRow.insertCell(2);
                newCell.colSpan = GridView1.get_columns().length;
                var nestedDiv = $get("nested");
                newCell.appendChild(_nestedDiv);
            }
            function showNested(evt, context) {
                debugger;
                //alert('hai');
                if (_sImgId == null) {
                    var sortColumn = GridView2.get_sortColumn();
                    var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                    var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                    DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, context[0].id, loadNestedGridView);

                    var tableRef = $get('<%= GridView1.ClientID %>');
                    //insert a new row
                    var row = evt.target.parentNode.parentNode;
                    //  var row = evt.target.parentNode;
                    var newRow = tableRef.insertRow(row.rowIndex + 1);
                    // Insert a cell in the row at index 0
                    var td1 = document.createElement('td');
                    var td2 = document.createElement('td');
                    newRow.appendChild(td1);
                    newRow.appendChild(td2);
                    var newCell = newRow.insertCell(2);
                    newCell.colSpan = GridView1.get_columns().length;

                    _sObj = context[0].id;
                    _sImgId = context[1].imgId;
                    _row = context[2].rowid;
                    _childPage = 1;
                    //_nestedDiv = $get("nested");

                    newCell.appendChild(_nestedDiv);
                }
                else {
                    if (_sImgId != context[1].imgId && _childPage == 1) {
                        expandcollapse(_sImgId);
                    }

                    var sortColumn = GridView2.get_sortColumn();
                    var sortOrder = (GridView2.get_sortOrder() == AjaxDataControls.GridViewSortOrder.Descending) ? 'DESC' : 'ASC';
                    var startIndex = (Pager2.get_pageIndex() * Pager2.get_pageSize());
                    DataService.GetOrdersList(startIndex, Pager2.get_pageSize(), sortColumn, sortOrder, context[0].id, loadNestedGridView);

                    var tableRef = $get('<%= GridView1.ClientID %>');
                    //insert a new row
                    var row = evt.target.parentNode.parentNode;
                    //  var row = evt.target.parentNode;
                    var newRow = tableRef.insertRow(row.rowIndex + 1);
                    // Insert a cell in the row at index 0
                    var td1 = document.createElement('td');
                    var td2 = document.createElement('td');
                    newRow.appendChild(td1);
                    newRow.appendChild(td2);
                    var newCell = newRow.insertCell(2);
                    newCell.colSpan = GridView1.get_columns().length;

                    _sObj = context[0].id;
                    _sImgId = context[1].imgId;
                    _row = context[2].rowid;
                    _childPage = 1;
                    //_nestedDiv = $get("nested");
                    newCell.appendChild(_nestedDiv);
                }
            }

            function loadNestedGridView(result) {
              //  debugger;
                if (result != null) {
                    Pager2.set_recordCount(result.Total);
                    GridView2.set_dataSource(result.Rows);
                    GridView2.dataBind();
                    var img = _gridView._element.document.getElementById(_sImgId);

                    if (_gridView._element.document.getElementById('nested').style.display == "none") {
                        _gridView._element.document.getElementById('nested').style.display = "block";
                        if (_row == 'alt') {
                            img.src = "Images/minus.gif";
                        }
                        else {
                            img.src = "Images/minus.gif";
                        }
                        img.alt = "Close to view other Customers";
                    }
                    else {
                        _gridView._element.document.getElementById('nested').style.display = "none";
                        if (_row == 'alt') {
                            _sImgId = null;
                            img.src = "Images/plus.gif";
                        }
                        else {
                            _sImgId = null;
                            img.src = "Images/plus.gif";
                        }
                        img.alt = "Expand to show Orders";
                    }
                }
                else {
                    _sImgId = null;
                }
            }

            function onRowDataBound(sender, e) {

                var row = e.get_row(); //.get_rowIndex()
                if (row.get_isDataRowType()) {
                    var rIndex = row.get_rowIndex();
                    var id = GridView1.get_dataKeys()[rIndex];
                    var context = new Array();
                    context[0] = { id: id };

                    //create function callback so we can pass the parent id           
                    var callback = Function.createCallback(showNested, context);
                    //  alert(rIndex);
                    var imgrow = row.findControl('imgdiv');
                    if (imgrow) {
                        $addHandler(imgrow, "click", callback);
                        context[1] = { imgId: imgrow.id };
                        context[2] = { rowid: row };
                    }
                    var create_row = row._container;
                    //BindChildGrid(id,create_row);
                }
                //if(imgrow)
                // imgrow.onclick = function () {expandcollapse(row,imgrow.id)};
            }

            function pageChanged(sender, e) {
              //  debugger;
                Pager1.set_pageIndex(e.get_newPageIndex());
                _sImgId = null;
                loadCustomers();
            }

            //***************GirdView1 Events *****************//
            //***************GirdView2 Events *****************//

            function onRowDataBound_2(sender, e) {
            }

            function onSortCommand_2(sender, e) {
               // debugger;
                GridView2.set_sortColumn(e.get_sortColumn())
                GridView2.set_sortOrder(e.get_sortOrder());
                Pager2.set_pageIndex(0); // need to reset the page index as sorting is changed
                LoadOrders(_sObj);
            }
            function pageChanged_2(sender, e) {
               // debugger;
                Pager2.set_pageIndex(e.get_newPageIndex());
                LoadOrders(_sObj);
            }
            //***************GirdView2 Events *****************//
            function onColumnsLoaded(sender, e) {
                loadCustomers();
            }
            function onColumnDragStart(sender, e) {
                var column = e.get_column();
                // writeMessage(String.format('{0} Column Drag Started<br/>', column.get_headerText()));
            }

            function onColumnDropped(sender, e) {

                _gridView.saveColumnsToProfile('DndColumns');
                var column = e.get_column();
                //writeMessage(String.format('{0} Column Dropped in index {1} from index {2}<br/>', column.get_headerText(), e.get_newIndex(), e.get_oldIndex()));
                // GridView1.saveColumnsToProfile('DndColumns');
            }
            function onColumnDragStart_2(sender, e) {
                var column = e.get_column();
                // writeMessage(String.format('{0} Column Drag Started<br/>', column.get_headerText()));
            }
            function onColumnDropped_2(sender, e) {

                _gridView2.saveColumnsToProfile('DndColumns');
                var column = e.get_column();
                //writeMessage(String.format('{0} Column Dropped in index {1} from index {2}<br/>', column.get_headerText(), e.get_newIndex(), e.get_oldIndex()));
                // GridView1.saveColumnsToProfile('DndColumns');
            }

            function writeMessage(message) {
                $get('divEvents').innerHTML += message;
            }
           

        </script>

    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="TheScriptManager" runat="server" EnablePageMethods="false"
            EnablePartialRendering="false">
            <Services>
                <asp:ServiceReference Path="~/DataService.asmx" />
            </Services>
            <Scripts>
                <asp:ScriptReference Path="~/PreviewScripts/PreviewScript.js" />
                <asp:ScriptReference Path="~/PreviewScripts/PreviewDragDrop.js" />
                <asp:ScriptReference Path="~/PreviewScripts/PreviewGlitz.js" />
                <%--<asp:ScriptReference Path="~/PreviewScripts/Common.js" />
                <asp:ScriptReference Path="~/PreviewScripts/BaseScripts.js" />
                <asp:ScriptReference Path="~/PreviewScripts/Timer.js" />
                <asp:ScriptReference Path="~/PreviewScripts/NumericUpDownBehavior.js" />
                <asp:ScriptReference Path="~/PreviewScripts/FilteredTextBoxBehavior.js" />
                <asp:ScriptReference Path="~/PreviewScripts/DragDropScripts.js" />
                <asp:ScriptReference Path="~/PreviewScripts/FloatingBehavior.js" />--%>
            </Scripts>
        </asp:ScriptManager>
        <AjaxData:GridView ID="GridView1" runat="server" CssClass="DataWebControlStyle" CellSpacing="0"
            CellPadding="3" SortColumn="ContactName" DataKeyName="ID" SortOrderAscendingImageUrl="~/Images/up.gif"
            SortOrderDescendingImageUrl="~/Images/dn.gif" ColumnDragStartEvent="onColumnDragStart"
           
            ColumnDroppedEvent="onColumnDropped" SortCommandEvent="onSortCommand" RowDataBoundEvent="onRowDataBound"
            Font-Names="Verdana" Font-Size="X-Small" Width="453px">
            <RowStyle BackColor="Gainsboro" />
            <AlternatingRowStyle BackColor="White" />
            <HeaderStyle BackColor="ActiveBorder" ForeColor="White" />
            <FooterStyle BackColor="White" />
            <Columns>
                <AjaxData:GridViewTemplateColumn ColumnID="1" AllowDragAndDrop="false">
                    <ItemTemplate>
                        <img id="imgdiv" alt="Click to show/hide Orders for Customer" width="9px" border="0"
                            src="Images/plus.gif" />
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
                <AjaxData:GridViewTemplateColumn ColumnID="2" AllowDragAndDrop="false">
                    <ItemTemplate>
                        <input type="checkbox" id="chekId" visible="true" />
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
                <AjaxData:GridViewBoundColumn HeaderText="ID" DataField="ID" AllowDragAndDrop="true"
                    SortField="CustomerID" ColumnID="3">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="CustomerName" DataField="ContactName" AllowDragAndDrop="true"
                    SortField="ContactName" ColumnID="4">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="ContactTitle" AllowDragAndDrop="true" DataField="ContactTitle"
                    SortField="ContactTitle" ColumnID="5">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="Address" DataField="Address" AllowDragAndDrop="true"
                    SortField="Address" ColumnID="6">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewBoundColumn HeaderText="Country" DataField="Country" AllowDragAndDrop="true"
                    SortField="Country" ColumnID="7">
                    <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                    <ItemStyle HorizontalAlign="Left" />
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewTemplateColumn ColumnID="8" AllowDragAndDrop="true">
                    <ItemTemplate>
                        <span></span>
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
                <AjaxData:GridViewCommandColumn ShowEditButton="True" AllowDragAndDrop="true" ColumnID="9"
                    ShowCancelButton="False" />
            </Columns>
        </AjaxData:GridView>
        <AjaxData:Pager ID="Pager1" Width="458px" runat="server" CssClass="PagerRowStyle"
            CurrentPageStyle-CssClass="PagerCurrentPage" OtherPageStyle-CssClass="PagerOtherPage"
            PageChangedEvent="pageChanged">
            <CurrentPageStyle CssClass="PagerCurrentPage"></CurrentPageStyle>
            <OtherPageStyle CssClass="PagerOtherPage"></OtherPageStyle>
        </AjaxData:Pager>
        <div id="nested" style="left: 20px; display: none">
            <tr>
                <td colspan="100%">
                    <AjaxData:GridView ID="GridView2" Width="450px" Font-Size="X-Small" Font-Names="Verdana"
                        runat="server" SortColumn="OrderID" ShowFooter="true" CellSpacing="0" CellPadding="3"
                        SortOrderAscendingImageUrl="~/Images/up.gif" SortOrderDescendingImageUrl="~/Images/dn.gif"
                        SortCommandEvent="onSortCommand_2" RowDataBoundEvent="onRowDataBound_2" ColumnDragStartEvent="onColumnDragStart_2"
                        ColumnDroppedEvent="onColumnDropped_2" Height="112px">
                        <RowStyle BackColor="Gainsboro" />
                        <AlternatingRowStyle BackColor="White" />
                        <HeaderStyle BackColor="ActiveBorder" ForeColor="White" />
                        <FooterStyle BackColor="White" />
                        <Columns>
                            <AjaxData:GridViewTemplateColumn ColumnID="1" AllowDragAndDrop="true">
                                <ItemTemplate>
                                    <input type="checkbox" id="chekId2" visible="true" />
                                </ItemTemplate>
                            </AjaxData:GridViewTemplateColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="OrderID" AllowDragAndDrop="true" DataField="OrderID"
                                SortField="OrderID" ColumnID="1">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="Freight" AllowDragAndDrop="true" DataField="Freight"
                                SortField="Freight" ColumnID="2">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="ShipName" AllowDragAndDrop="true" DataField="ShipName"
                                SortField="ShipName" ColumnID="3">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewBoundColumn HeaderText="ShipAddress" AllowDragAndDrop="true" DataField="ShipAddress"
                                SortField="ShipAddress" ColumnID="4">
                                <HeaderStyle HorizontalAlign="Left" Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </AjaxData:GridViewBoundColumn>
                            <AjaxData:GridViewCommandColumn HeaderText="Edit" ShowEditButton="True" AllowDragAndDrop="False"
                                ColumnID="5" ShowCancelButton="False">
                            </AjaxData:GridViewCommandColumn>
                        </Columns>
                    </AjaxData:GridView>
                </td>
            </tr>
            <tr>
                <td>
                    <AjaxData:Pager ID="Pager2" runat="server" CssClass="PagerRowStyle" PageSize="5"
                        CurrentPageStyle-CssClass="PagerCurrentPage" Height="20px" OtherPageStyle-CssClass="PagerOtherPage"
                        PageChangedEvent="pageChanged_2">
                        <CurrentPageStyle CssClass="PagerCurrentPage"></CurrentPageStyle>
                        <OtherPageStyle CssClass="PagerOtherPage"></OtherPageStyle>
                    </AjaxData:Pager>
                </td>
            </tr>
        </div>
        </form>
    </body>
    </html>
    ///*************************ended AjaxGrid.aspx*********************************//

  • 01-12-2009 10:16 AM In reply to

    • xxxd
    • Top 10 Contributor
    • Joined on 12-18-2006
    • Slacker
    • Points 19,057

    Re: ADC Nested Grid problem in Firefox & crome etc..

     this is definitely overwhelming. I will look at it more closely later.

    However I would not think FireFox have problem expanding child grid. That was the first browser I tested also.

  • 01-12-2009 10:26 AM In reply to

    • xxxd
    • Top 10 Contributor
    • Joined on 12-18-2006
    • Slacker
    • Points 19,057

    Re: ADC Nested Grid problem in Firefox & crome etc..

    I am a bit confused. After all, you used the first technique (a second gridview at design time, then attach it to a parent row) instead of the second technique, the one suggested by Sonu, that is, creating  a dynamic child adc control on the rowCreated event of each parent row, then show/hide accordingly.

    Right?

    And the goal now is simply expand one child gridview at a time?

  • 01-12-2009 12:16 PM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

    hi

    I find the issue...

    this is not firefox issue..Small issue Only... :)

    as per xxx'ds post...

    function showNested(evt, context)
                {
                 debugger;
                    DataService.GetAllSupplierById(context.id, loadNestedGridView);
        

    Senario1:

    //**************** Start Cell appennding***************///           

         var cell = evt.target.parentNode;
           Cell.appendChild($get("nested"));

    //*************Ended cell appending******************//

    Senario2:

                //***********start Row Appending*********//


                    var tableRef = $get('<%= GridView1.ClientID %>');
                    //insert a new row
                    var row = evt.target.parentNode.parentNode;
                    //  var row = evt.target.parentNode;
                    var newRow = tableRef.insertRow(row.rowIndex + 1);
                    // Insert a cell in the row at index 0
                      var newCell = newRow.insertCell(0);
                    newCell.colSpan = GridView1.get_columns().length;

                    _childPage = 1;
                    //_nestedDiv = $get("nested");
                    //newCell.appendChild(_nestedDiv);
                    newCell.appendChild($get("nested"));

    }

    //*******************Ended row appending*************//

         

    In  senario1  firefox brower working fine

    In  senario2  firefox brower is not working ..just creating emty...row....

    please give me solution for this.....

    Thanks

    ramesh

     

     



            

  • 01-12-2009 12:53 PM In reply to

    • xxxd
    • Top 10 Contributor
    • Joined on 12-18-2006
    • Slacker
    • Points 19,057

    Re: ADC Nested Grid problem in Firefox & crome etc..

    I am sorry, but I am lost.

    I tested the 2nd scenario with FireFox, it does work.

    .....

     

    <%@ Page Language="C#" MasterPageFile="~/Site.master" Title="GridView Basic" %>

    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">
        <h3>
            Supplier Information</h3>
        <AjaxData:GridView ID="GridView1" runat="server" CssClass="DataWebControlStyle" CellSpacing="0"
            CellPadding="3" RowDataBoundEvent="RowDataBound" DataKeyName="ID">
            <AlternatingRowStyle CssClass="AlternatingRowStyle" />
            <RowStyle CssClass="RowStyle" />
            <HeaderStyle CssClass="HeaderStyle" />
            <Columns>
                <AjaxData:GridViewBoundColumn DataField="Company" HeaderText="Company">
                </AjaxData:GridViewBoundColumn>
                <AjaxData:GridViewTemplateColumn>
                    <ItemTemplate>
                        <a id="lnk" href="BLOCKED SCRIPTvoid(0)">Show Nested Gridview</a>
                    </ItemTemplate>
                </AjaxData:GridViewTemplateColumn>
            </Columns>
            <EmptyDataTemplate>
                There is no records available.
            </EmptyDataTemplate>
            <EmptyDataRowStyle HorizontalAlign="Center" />
        </AjaxData:GridView>
       
                    <AjaxData:Pager ID="Pager1" runat="server" CssClass="PagerRowStyle"
                    CurrentPageStyle-CssClass="PagerCurrentPage"
                    OtherPageStyle-CssClass="PagerOtherPage" PageChangedEvent="pageChanged"></AjaxData:Pager>
            <div id="nested">
            <AjaxData:GridView ID="GridView2" runat="server">
            </AjaxData:GridView>
        </div>

        <script type="text/javascript">

            var rIndex;
            function RowDataBound(sender, e) {

                var row = e.get_row(); //.get_rowIndex()

                rIndex = row.get_rowIndex();

                var id = GridView1.get_dataKeys()[rIndex];
               
                var context = { id:  id};

                var callback = Function.createCallback(showNested, context);
                var lnk = row.findControl('lnk');

                if (lnk) {
                    $addHandler(lnk, "click", callback);
                }
            }


            function showNested(evt, context) {
                loadNestedGridView(context.id);

                var tableRef = $get('<%= GridView1.ClientID %>');
                //insert a new row
             
                var row = evt.target.parentNode.parentNode;

                var newRow = tableRef.insertRow(row.rowIndex+1);

                // Insert a cell in the row at index 0
                var newCell = newRow.insertCell(0);


                newCell.colSpan = GridView1.get_columns().length;
               
                newCell.appendChild($get("nested"));

            }
           
            function pageLoad(sender, e) {
                Pager1.set_recordCount(100);
             
                DataService.GetAllSupplier(onLoadSuccess);
            }

            function loadNestedGridView(id) {

                var data = new Array();
                data[0] = { Id: 1, Name: "Sonu Kapoor" };
                data[1] = { Id: 2, Name: "Xun Ding" };
                data[2] = { Id: 3, Name: "Gabriel" };
                data[3] = { Id: 3, Name: "Onur" };


                GridView2.set_dataSource(data);
                GridView2.dataBind();
            }


            function onLoadSuccess(result) {
                GridView1.set_dataSource(result);
                GridView1.dataBind();
            }
            function pageChanged(sender, e) {
                Pager1.set_pageIndex(e.get_newPageIndex());
                DataService.GetAllSupplier(onLoadSuccess);
            }

        </script>

    </asp:Content>

  • 02-10-2009 2:09 AM In reply to

    Re: ADC Nested Grid problem in Firefox & crome etc..

     Hi,

        Sorry for asking same question again and again... :) for me its not working...its not firefox issue...my application issue only..as your nested grid sample code working fine all the browsers...

    but I am  new in firebug so Iam requesting you to give me your mail ID ..

    I will send the zip file to u.... or else shall I paste the code here?

    for me This issue taken..days..still issue..not completed......

    I strongly..hopes to u to solve this issue..within 10 min........

     

    Thanks

    ramesh..

  • 02-10-2009 3:58 PM In reply to

    • xxxd
    • Top 10 Contributor
    • Joined on 12-18-2006
    • Slacker
    • Points 19,057

    Re: ADC Nested Grid problem in Firefox & crome etc..

     Sure. You can send me email at xunding@gmail.com. However, I always prefer you post your question and your code here.

    I have never worked with chrome so far, but I can try.

    Cannot promise u to solve any problem in 10 min, as i am out somewhere today, and my internet connection at home is broken. But will always try, try my best asap.

    thanks for the trust.

Page 1 of 1 (13 items)