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

get_masterTableView() returns null using a webservice as datasource

1 Answer 129 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jim
Top achievements
Rank 1
Jim asked on 09 Aug 2011, 06:03 PM
Hi all,

I've read a lot of posts concerning this issue so I've tried a lot of different things already.  The grid doesn't even launch the gridCreated.  The grid is within an Asp form.  I've got two other grids in a master/detail scenario setup as web service data sources with the same svc code and they work fine.  I've got linq data source and checked that the source is okay as well.

I've got the latest tools version.

Here's my aspx , wcf file and jscript:
function pageLoad() {
             // create references to list of controls from the form
             // bind cse notes based on filter
             rdCSENotes = $find('<%= rlMOView.FindControl("rdGridCSENotes").ClientID %>');
             var tableViewCse = rdCSENotes.get_masterTableView();

function GridCreated(sender, eventArgs) {
              alert("Grid with ClientID: " + sender.get_id() + " was created");
          }
 function rdGridNotes_DataBinding(sender, args) {
              // bind notes based on id to determine security group
              // for identifying filter needs to be applied other than
              // mfgorder id
              // get form key to filter the notes through
              var hdnMfgKey = document.getElementById('ctl00_MainContent_hdnMfgKey');
              // reference the grid by id
              var rdNotes_id = sender.get_id();
              var arrNotesGridControls = new Array(6);
              arrNotesGridControls[0] = "rdGridCSENotes^14";
              arrNotesGridControls[1] = "rdGridCSTNotes^15";
              arrNotesGridControls[2] = "rdGridBSNotes^16";
              arrNotesGridControls[3] = "rdGridQANotes^26";
              arrNotesGridControls[4] = "rdGridPurchasingNotes^17";
              arrNotesGridControls[5] = "rdGridLogisticsNotes^52";
              arrNotesGridControls[6] = "rdGridCustomerSpecNotes^30";
              // pull the group id
              for (var i = 0; i < arrNotesControls.length; i++) {
                  var arrSplit = arrNotesControls[i].split("^");
                  if (rdNotes_id.search(arrSplit[0]) != -1) {
                      // note identified attach the group to the end of the field name
                      // and fire filter event
                      var secGrp = arrSplit[1];
                      var filtKey = "MfgOrderID^" + secGrp + "^";
                      // apply filter to the grid data source include the security group id to handle in the service method
                      rdCSE = $find('<%= rlMOView.FindControl("rdGridCSENotes").ClientID %>');
                      tableView = rdCSE.get_masterTableView();
                      tableView.filter(filtKey, hdnMfgKey.value, "EqualTo");
                      break;
                  }
              }
          }
<telerik:RadGrid ID="rdGridCSENotes" GridLines="None" EnableEmbeddedSkins="False"
                                                    Skin="ddiWebBlue" runat="server" Height="48px" Width="875px"  EnableViewState="false"
                                                    AutoGenerateColumns="False" CellSpacing="0" AllowAutomaticUpdates="false" AllowAutomaticDeletes="False"
                                                    AllowAutomaticInserts="false" ShowHeader="False" AllowPaging="false">
                                                    <MasterTableView ShowFooter="false" AllowNaturalSort="false" CommandItemDisplay="Top" ClientDataKeyNames="MfgOrderID"
                                                        ItemStyle-CssClass="comments" NoMasterRecordsText=" <div style='font-size: 10px; font-family: 'segoe ui',arial,sans-serif;'>No CSE notes currently entered.</div>"
                                                        TableLayout="Fixed" GridLines="Horizontal" ShowHeadersWhenNoRecords="False">
                                                        <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" />
                                                        <CommandItemStyle CssClass="commViewCommand" />
                                                        <ItemStyle CssClass="comments" />
                                                        <AlternatingItemStyle CssClass="comments" />
                                                        <Columns>
                                                             <telerik:GridDateTimeColumn DataField="StatusDateTime" DataType="System.DateTime"
                                                                ItemStyle-Width="85px" DataFormatString="{0:MM/dd/yy hh:mm tt}">
                                                            </telerik:GridDateTimeColumn>
                                                            <telerik:GridBoundColumn DataField="LogonID" DataType="System.String" HeaderText="DisplayName"
                                                                UniqueName="DisplayName" ItemStyle-Width="70px">
                                                            </telerik:GridBoundColumn>
                                                            <telerik:GridBoundColumn DataField="StatusComment" DataType="System.String" HeaderText="StatusComment"
                                                                UniqueName="StatusComment" ItemStyle-Wrap="false" ItemStyle-Width="653px">
                                                            </telerik:GridBoundColumn>
                                                        </Columns>
                                                    </MasterTableView>
                                                <ClientSettings>
                                            <DataBinding Location="GridMasterDetailsService.svc" FilterParameterType="Linq" SelectMethod="GetNotesDataAndCount"
                                                SortParameterType="Linq">
                                            </DataBinding>
                                            <ClientEvents OnDataBinding="rdGridNotes_DataBinding" OnGridCreated="GridCreated" OnCommand="function(){}" />
                                            <Scrolling AllowScroll="True" UseStaticHeaders="true" SaveScrollPosition="True">
                                            </Scrolling>
                                                   </ClientSettings>
                                                    <HeaderContextMenu EnableEmbeddedSkins="False" CssClass="GridContextMenu GridContextMenu_ddiWebBlue">
                                                    </HeaderContextMenu>
                                                </telerik:RadGrid>
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.Web.Services;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Collections.Generic;
using System.Collections;
using System.Reflection;
  
namespace DataContracts
{
    [DataContract]
    public class MO_POHdr
    {
         [DataMember]
        public int MfgAssocDocID { get; set; }
         [DataMember]
         public int? MfgOrderID { get; set; }
        [DataMember]
        public string ponumber { get; set; }
        [DataMember]
        public string vendname { get; set; }
        [DataMember]
        public string vendorid { get; set; }
        [DataMember]
        public string country { get; set; }
        [DataMember]
        public string vndclsid { get; set; }
        [DataMember]
        public DateTime? docdate { get; set; }
        [DataMember]
        public string hold { get; set; }
        [DataMember]
        public string shipmthd { get; set; }
    }
  
    [DataContract]
    public class MOCommentDisplay
    {
        [DataMember]
        public int MfgOrderLogID { get; set; }
        [DataMember]
        public int MfgOrderID { get; set; }
        [DataMember]
        public int? AccountID { get; set; }
        [DataMember]
        public int? CommentGroupAccessID { get; set; }
        [DataMember]
        public string LogonID { get; set; }
        [DataMember]
        public DateTime? StatusDateTime { get; set; }
        [DataMember]
        public int? PeriodKey { get; set; }
        [DataMember]
        public string StatusComment { get; set; }
        [DataMember]
        public string Code { get; set; }
    }
  
    [DataContract]
    public class PODet
    {
        [DataMember]
        public string ponumber { get; set; }
        [DataMember]
        public string itemnmbr { get; set; }
        [DataMember]
        public decimal? qtyorder { get; set; }
        [DataMember]
        public string itemdesc { get; set; }
        [DataMember]
        public string postatus { get; set; }
        [DataMember]
        public string shipmthd { get; set; }
        [DataMember]
        public DateTime? released_date { get; set; }
        [DataMember]
        public DateTime? prmdate { get; set; }
        [DataMember]
        public DateTime? reqdate { get; set; }
    }
}
  
public class MyData
{
    public int Count { get; set; }
    public IList Data { get; set; }
}
  
[ServiceContract]
[ServiceKnownType("GetKnownTypes")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class GridMasterDetailsService
{
    public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
    {
        List<Type> knownTypes = new List<System.Type>();
  
        knownTypes.Add(typeof(DataContracts.MO_POHdr));
        knownTypes.Add(typeof(DataContracts.PODet));
        knownTypes.Add(typeof(DataContracts.MOCommentDisplay));
        return knownTypes;
    }
  
    [OperationContract]
    public MyData GetMOPOHdrDataAndCount(int startRowIndex, int maximumRows, string sortExpression, string filterExpression)
    {
        maximumRows = 20;
        if (filterExpression != "")
        {
            filterExpression = filterExpression.Replace("\"", string.Empty);
        }
        GridBindingData data = RadGrid.GetBindingData("AppDataClassesDataContext", "MOAssocDocuments", startRowIndex, maximumRows, sortExpression, filterExpression);
        MyData result = new MyData();
        result.Data = data.Data.OfType<MOAssocDocument>().Select(c => new DataContracts.MO_POHdr()
        {
            MfgAssocDocID = c.MfgAssocDocID,
            MfgOrderID = c.MfgOrderID,
            ponumber = c.POHdr.ponumber,
            vendname = c.POHdr.vendname,
            vendorid = c.POHdr.vendorid,
            country = c.POHdr.country,
            vndclsid = c.POHdr.vndclsid,
            docdate = c.POHdr.docdate,
            hold = c.POHdr.hold,
            shipmthd = c.POHdr.shipmthd
        }).ToList();
        result.Count = data.Count;
        return result;
    }
  
    [OperationContract]
    public MyData GetPODetDataAndCount(int startRowIndex, int maximumRows, string sortExpression, string filterExpression)
    {
       // maximumRows = 50;
        GridBindingData data = RadGrid.GetBindingData("AppDataClassesDataContext", "PODets", startRowIndex, maximumRows, sortExpression, filterExpression);
        MyData result = new MyData();
        result.Data = data.Data.OfType<PODet>().Select(o => new DataContracts.PODet()
        {
            ponumber = o.ponumber,
            itemnmbr = o.itemnmbr,
            qtyorder = o.qtyorder,
            itemdesc = o.itemdesc,
            postatus = o.postatus,
            shipmthd = o.shipmthd,
            released_date = o.released_date,
            prmdate = o.prmdate,
            reqdate=o.reqdate
        }).ToList();
        result.Count = data.Count;
        return result;
    }
  
    [OperationContract]
    public MyData GetNotesDataAndCount(int startRowIndex, int maximumRows, string sortExpression, string filterExpression)
    {
        sortExpression = "StatusDateTime descending";
        var sSecGrp = filterExpression.Split('^');
        filterExpression = "CommentGroupAccessID EqualTo " + sSecGrp[1] + " And MfgOrderID = " + sSecGrp[2];
  
        GridBindingData data = RadGrid.GetBindingData("AppDataClassesDataContext", "MOCommentDisplays", startRowIndex, maximumRows, sortExpression, filterExpression);
        MyData result = new MyData();
        result.Data = data.Data.OfType<MOCommentDisplay>().Select(p => new DataContracts.MOCommentDisplay()
        {
            MfgOrderLogID = p.MfgOrderLogID,
            MfgOrderID = p.MfgOrderLogID,
            AccountID = p.AccountID,
            CommentGroupAccessID = p.CommentGroupAccessID,
            LogonID = p.Account.LogonID,
            StatusDateTime = p.StatusDateTime,
            PeriodKey = p.PeriodKey,
            StatusComment = p.StatusComment,
            Code = p.CLib.Code
        }).ToList();
        result.Count = data.Count;
        return result;
    }
}


Thanks,
-- Jim

1 Answer, 1 is accepted

Sort by
0
Jim
Top achievements
Rank 1
answered on 09 Aug 2011, 08:53 PM
Figured it out.  The problem had to do with not showing headers among other problems.  Not a good coding day.  Thanks anyway..
Tags
Grid
Asked by
Jim
Top achievements
Rank 1
Answers by
Jim
Top achievements
Rank 1
Share this question
or