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

client side row select not working

2 Answers 119 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jim
Top achievements
Rank 1
Jim asked on 31 Aug 2011, 02:56 PM
HI all,

I've got a grid that uses a web service as a datasource.  I've got a method in the web service to retrieve and filter data as needed.
The data retrieves and filter okay but when I select a row from the filter, client-side, then try to retrieve a value from the selected row in the filter it comes up with &nbsp& or no value.  However it works if I physically click on a row when I set up a row selected event to retrieve the value.

In other words, selecting a row in javascript code doesn't work.  Do I need to rebind the grid or something.  I've tried many different samples/solutions and nothing seems to work.

Here's the service, Grid, and Javascript from the client.
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 Telerik.Web.UI;
using System.Reflection;
  
namespace DC
{
    [DataContract]
    public class POCN_hdr
    {
         [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 POCN_det
    {
        [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 POCNAssocDocService
{
    public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
    {
        List<Type> knownTypes = new List<System.Type>();
  
        knownTypes.Add(typeof(DC.POCN_hdr));
        knownTypes.Add(typeof(DC.POCN_det));
  
        return knownTypes;
    }
  
    [OperationContract]
    public MyData retrievePOCN_HdrDataAndCount(int startRowIndex, int maximumRows, string sortExpression, string filterExpression)
    {
        maximumRows = 20;
        if (filterExpression != "")
        {
            filterExpression = filterExpression.Replace("\"", string.Empty);
        }
        else
        {
            filterExpression = "MfgOrderID = -1";
        }
        GridBindingData data = RadGrid.GetBindingData("AppDataClassesDataContext", "MOAssocDocuments", startRowIndex, maximumRows, sortExpression, filterExpression);
        MyData result = new MyData();
        result.Data = data.Data.OfType<MOAssocDocument>().Select(c => new DC.POCN_hdr()
        {
            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 retrievePOCN_DetDataAndCount(int startRowIndex, int maximumRows, string sortExpression, string filterExpression)
    {
       // maximumRows = 50;
        if (filterExpression == "")
        {
            filterExpression = "qtyorder = -999999";
        }
        else
        {
            string sPoNumb = filterExpression.Substring(13, 8);
  
            AppDataClassesDataContext appDB = new AppDataClassesDataContext();
            var dq = from dqr in appDB.PODets where dqr.ponumber == sPoNumb select dqr;
  
            if (dq.Count() == 0)
            {
                filterExpression = "qtyorder = -999999";
            }
              
        }
  
        GridBindingData data = RadGrid.GetBindingData("AppDataClassesDataContext", "PODets", startRowIndex, maximumRows, sortExpression, filterExpression);
        MyData result = new MyData();
        result.Data = data.Data.OfType<PODet>().Select(o => new DC.POCN_det()
        {
            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;
    }
  
}
<telerik:RadGrid ID="rdGridAsgPOHdr" runat="server" AllowPaging="false" AllowSorting="false"
                                Height="100px" AllowFilteringByColumn="false"
                                GridLines="None" EnableEmbeddedSkins="false" Skin="WebBlue" AllowMultiRowSelection="false"
                                ItemStyle-Font-Names="'segoe ui',arial,sans-serif;" ItemStyle-Font-Size="9px"
                                AutoGenerateColumns="false" AlternatingItemStyle-Font-Names="'segoe ui',arial,sans-serif;"
                                AlternatingItemStyle-Font-Size="9px" HeaderStyle-Font-Names="'segoe ui',arial,sans-serif;"
                                HeaderStyle-Font-Size="9px">
                                <MasterTableView ClientDataKeyNames="ponumber" DataKeyNames="ponumber" AllowMultiColumnSorting="false"
                                    TableLayout="Fixed" NoMasterRecordsText="<div style='width: 705px; font-size: 9px; font-family: 'segoe ui',arial,sans-serif;'>No assigned po details to display.</div>">
                                    <CommandItemStyle CssClass="commViewCommand" />
                                    <ItemStyle CssClass="comments" />
                                    <AlternatingItemStyle CssClass="comments" />
                                    <Columns>
                                        <telerik:GridBoundColumn DataField="ponumber" HeaderText="PO#" UniqueName="ponumber"
                                            ItemStyle-Width="40px" HeaderStyle-Width="40px" />
                                        <telerik:GridBoundColumn DataField="vendname" HeaderText="Vendor" UniqueName="vendname"
                                            ItemStyle-Width="400px" HeaderStyle-Width="400px" />
                                        <telerik:GridBoundColumn DataField="vendorid" HeaderText="VID" UniqueName="vendorid"
                                            ItemStyle-Width="40px" HeaderStyle-Width="40px" />
                                        <telerik:GridBoundColumn DataField="docdate" HeaderText="Doc Dt" UniqueName="docdate"
                                            DataFormatString="{0:MM/dd/yy}" ItemStyle-Width="35px" HeaderStyle-Width="35px" />
                                        <telerik:GridBoundColumn DataField="shipmthd" HeaderText="Ship Via" UniqueName="shipmthd"
                                            ItemStyle-Width="105px" HeaderStyle-Width="105px" />
                                        <telerik:GridBoundColumn DataField="detCnt" ItemStyle-Width="1px" ItemStyle-BackColor="White"
                                            HeaderStyle-Width="1px" ItemStyle-ForeColor="White" UniqueName="detCnt" ItemStyle-CssClass="commViewCommand">
                                        </telerik:GridBoundColumn>
                                          <telerik:GridBoundColumn DataField="MfgOrderID" DataType="System.Int32" HeaderText="MfgOrderID" HeaderStyle-Width="1px"
                                                        UniqueName="MfgOrderID" ItemStyle-Width="1px" ItemStyle-CssClass="commViewCommand">
                                                    </telerik:GridBoundColumn>
                                                         <telerik:GridBoundColumn DataField="MfgAssocDocID" DataType="System.Int32" HeaderText="MfgAssocDocID" HeaderStyle-Width="1px"
                                                        UniqueName="MfgAssocDocID" ItemStyle-Width="1px" ItemStyle-CssClass="commViewCommand">
                                                    </telerik:GridBoundColumn>
                                    </Columns>
                                </MasterTableView>
                                <ClientSettings>
                                          <DataBinding Location="../Services/POCNAssocDocService.svc" FilterParameterType="Linq" SelectMethod="retrievePOCN_HdrDataAndCount"
                                        SortParameterType="Linq">
                                    </DataBinding>
                                    <ClientEvents OnDataBinding="rdGridAsgPOHdr_DataBinding"/>
                                    <Selecting AllowRowSelect="true" />
                                    <Scrolling AllowScroll="True" UseStaticHeaders="True" SaveScrollPosition="true" />
                                </ClientSettings>
                            </telerik:RadGrid>
rdGridPOHdr = $find('<%= rlMOView.FindControl("rdGridAsgPOHdr").ClientID %>');
                   
                  var tableView = rdGridPOHdr.get_masterTableView();
                  tableView.filter("MfgOrderID", mfgID, "EqualTo");
                  tableView.clearSelectedItems();
                  var dataItem = tableView.get_dataItems()[0];
                  dataItem.set_selected(true);
                  var selectedRows = tableView.get_selectedItems();
                  for (var i = 0; i < selectedRows.length; i++) {
                      var row = selectedRows[i];
                      var cell = tableView.getCellByColumnUniqueName(row, "ponumber")
                      //here cell.innerHTML holds the value of the cell    
                  }

2 Answers, 1 is accepted

Sort by
0
Marin
Telerik team
answered on 02 Sep 2011, 09:23 AM
Hello Jim,

 Normally the filtering requires the grid to refresh and repopulate its data. You should not get the values of the  selected items immediately after filtering because they might not be populated yet. You can try this in a later event or after the page has refreshed. You can also try the selectItem method of the MasterTableView to see if it makes a difference in your case.

Greetings,
Marin
the Telerik team

Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>

0
Jim
Top achievements
Rank 1
answered on 02 Sep 2011, 12:58 PM
I'll give it shot at the Mastertable level.  Thanks..
Tags
Grid
Asked by
Jim
Top achievements
Rank 1
Answers by
Marin
Telerik team
Jim
Top achievements
Rank 1
Share this question
or