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

Could not find ResourceType selected for grouping

4 Answers 177 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
codispdp
Top achievements
Rank 1
codispdp asked on 06 Nov 2007, 01:43 PM
I am building a Team Outlook Calendar from our AD/Exchange binding the scheduler control to a DataTable from codebehind. My ResourceType is bound to an XmlDataSource with the values of the team members. I am receiving and error on the Schedule.DataBind();

Could not find ResourceType selected for grouping. Please, check that the GroupBy attribute is properly set and a ResourceType with the same name exists.

Can someone help, here is the code:
<form id="Form1" method="post" runat="server">  
        <ajax:ScriptManager ID="ScriptManager" runat="server" /> 
          
         <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">  
            <AjaxSettings> 
                <telerik:AjaxSetting AjaxControlID="RadScheduler1">  
                    <UpdatedControls> 
                        <telerik:AjaxUpdatedControl ControlID="RadScheduler1" LoadingPanelID="RadAjaxLoadingPanel1" /> 
                    </UpdatedControls> 
                </telerik:AjaxSetting> 
            </AjaxSettings> 
        </telerik:RadAjaxManager> 
          
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Transparency="30" BackColor="#E0E0E0" InitialDelayTime="500">  
            <asp:Image ID="Image1" Style="margin-top: 200px" runat="server" ImageUrl="~/controls/Radcontrols/Ajax/Skins/Default/loading.gif" 
                BorderWidth="0px" AlternateText="Loading"></asp:Image> 
        </telerik:RadAjaxLoadingPanel> 
 
        <div class="RadScheduler_Mac" style="background: transparent; width: 750px;">  
            <div class="headerTop">  
                Open System Team Calendar  
            </div> 
        </div> 
          
        <telerik:RadScheduler   
             runat="server"   
             ID="RadScheduler1" 
            Width="750px"   
            Skin="Mac"   
            SelectedView="ResourceView"   
            GroupBy="Members" 
            DayStartTime="07:00:00"   
            DayEndTime="18:00:00"   
            TimeZoneOffset="-05:00:00" 
            DataKeyField="NameID"   
             DataSubjectField="Subject" 
            DataStartField="StartTime"   
            DataEndField="EndTime"   
            DataRecurrenceField="RecurrenceRule" 
               DataRecurrenceParentKeyField="RecurrenceParentID">  
             <ResourceTypes> 
                <telerik:ResourceType   
                    KeyField="NameID"   
                    Name="Members"   
                    TextField="NameDesc"   
                    ForeignKeyField="NameID"   
                    DataSourceID="XmlDsResources" /> 
            </ResourceTypes> 
        </telerik:RadScheduler> 
 
         <asp:XmlDataSource id="XmlDsResources" DataFile="~/os/TeamCalendarResources.xml" runat="server"/>   
    </form> 

Imports System.Net  
Imports System.IO  
Imports System.XML  
Imports System.Data  
Imports System.Configuration  
Imports System.Security.Cryptography.X509Certificates  
Imports System.DirectoryServices  
 
Partial Class os_TeamCalendar  
    Inherits System.Web.UI.Page  
 
    Const errorLevel As Integer = 2  ' 2 = verbose, 1 = concise  
 
    Protected Sub Page_Load1(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load  
        ' sharing calendar must be set to reviewer http://office.microsoft.com/en-us/outlook/HP011111491033.aspx  
 
        If (Not IsPostBack) Then 
            RadScheduler1.SelectedDate = Today  
            Dim dt As New DataTable()  
            dt.Columns.Add("StartTime", System.Type.GetType("System.DateTime"))  
            dt.Columns.Add("EndTime", System.Type.GetType("System.DateTime"))  
            dt.Columns.Add("NameID", System.Type.GetType("System.String"))  
            dt.Columns.Add("Name", System.Type.GetType("System.String"))  
            dt.Columns.Add("Location", System.Type.GetType("System.String"))  
            dt.Columns.Add("Subject", System.Type.GetType("System.String"))  
            dt.Columns.Add("Status", System.Type.GetType("System.String"))  
            dt.Columns.Add("Type", System.Type.GetType("System.String"))  
            dt.Columns.Add("RecurrenceRule", System.Type.GetType("System.String"))  
            dt.Columns.Add("RecurrenceParentID", System.Type.GetType("System.Int32"))  
 
            Dim strUsers As String = System.Configuration.ConfigurationManager.AppSettings("Usernames")  
            Dim arrUsers() As String = strUsers.Split(",")  
            Dim strUser As String 
 
            For Each strUser In arrUsers  
                LookUpCalendar(strUser, RadScheduler1.SelectedDate, dt)  
            Next 
 
            RadScheduler1.DataSource = dt  
            RadScheduler1.DataBind()  
 
        Else 
 
        End If 
    End Sub 
 
    Sub LookUpCalendar(ByVal Name As StringByVal dDate As DateTime, ByRef dt As DataTable)  
 
        Dim strURL As String = "http://" & System.Configuration.ConfigurationManager.AppSettings("EMailServer") & "/exchange/" & Name & "/calendar/" 
 
        Dim strRequest As String = "<?xml version=""1.0""?>" & _  
                                                      "<g:searchrequest xmlns:g=""DAV:"">" & _  
                                                      "<g:sql>SELECT ""urn:schemas:calendar:location"", ""urn:schemas:httpmail:subject"", " & _  
                                                      """urn:schemas:calendar:dtstart"", ""urn:schemas:calendar:dtend"", " & _  
                                                      """urn:schemas:calendar:busystatus"", ""urn:schemas:calendar:instancetype"" " & _  
                                                      "FROM Scope('SHALLOW TRAVERSAL OF """ & strURL & """') " & _  
                                                      "WHERE NOT ""urn:schemas:calendar:instancetype"" = 1 " & _  
                                                      "AND ""DAV:contentclass"" = 'urn:content-classes:appointment' " & _  
                                                      "AND ""urn:schemas:calendar:dtstart"" > '" & _  
                                                      String.Format("{0:yyyy/MM/dd}", dDate) & " 00:00:00' " & _  
                                                      "AND ""urn:schemas:calendar:dtend"" &lt; '" & _  
                                                      String.Format("{0:yyyy/MM/dd}", dDate.AddDays(1)) & " 00:00:00' " & _  
                                                      "ORDER BY ""urn:schemas:calendar:dtstart"" ASC" & _  
                                                      "</g:sql></g:searchrequest>" 
 
        '0 = "  Instance type: 0-Single appointment<br>"  
        '1 = "  Instance type: 1-Master recurring appointment<br>"  
        '2 = "  Instance type: 2-Single instance, recurring appointment<br>"  
        '3 = "  Instance type: 3-Exception to a recurring appointment<br>"  
 
        Dim strStatusText As String = "" 
        Dim Status As Integer 
        Dim ResponseXmlDoc As XmlDocument = SendRequest("SEARCH", strURL, strRequest, strStatusText, Status)  
        AddToSchedule(ResponseXmlDoc, Name, dt)  
 
        'Display the results.  
        If (Status >= 200 And Status < 300) Then 
            'AddInfo("<br>" & Name & "   " & "Result = " & Status & ": " & strStatusText, 2)  
        ElseIf Status = 401 Then 
            'AddInfo("<br><font color='red'>Permission denied!</font>", 1)  
            'AddInfo("<br><font color='red'>Check your permissions for this item.</font>", 2)  
        Else 
            'AddInfo("<br><font color='red'>Request failed.</font>", 1)  
            'AddInfo("<br><font color='red'>Result = " & Status & ": " & strStatusText & "</font>", 2)  
        End If 
 
    End Sub 
 
    Sub AddToSchedule(ByVal ResponseXmlDoc As System.Xml.XmlDocument, ByVal Name As StringByRef dt As DataTable)  
        ' Build a list of the DAV:href XML nodes, corresponding to the folders  
        ' in the mailbox.  The DAV: namespace is typically assigned the a: prefix in the XML response body.  
        If (ResponseXmlDoc Is NothingThen Return 
        Dim HrefNodes As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("a:href")  
        ' Build a list of the urn:schemas:httpmail:subject XML nodes,  
        ' The urn:schemas:httpmail: namespace is typically assigned the e: prefix in the XML response body.  
        Dim SubjectNodeList As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("e:subject")  
        ' Build a list of the urn:schemas:calendar:location XML nodes,  
        ' The urn:schemas:calendar: namespace is typically assigned the d: prefix in the XML response body.  
        Dim LocationNodeList As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("d:location")  
        ' Build a list of the urn:schemas:calendar:dtstart XML nodes,  
        Dim StartTimeNodeList As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("d:dtstart")  
        ' Build a list of the urn:schemas:calendar:dtend XML nodes,  
        Dim EndTimeNodeList As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("d:dtend")  
        ' Build a list of the urn:schemas:calendar:busystatus XML nodes,  
        Dim BusyStatusNodeList As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("d:busystatus")  
        ' Build a list of the urn:schemas:calendar:instancetype XML nodes,  
        Dim InstanceTypeNodeList As System.Xml.XmlNodeList = ResponseXmlDoc.GetElementsByTagName("d:instancetype")  
 
        ' Loop through the returned items (if any).  
        If SubjectNodeList.Count > 0 Then 
 
            Dim i As Integer 
            For i = 0 To SubjectNodeList.Count - 1  
                Dim dr As DataRow = dt.NewRow()  
                dr("Subject") = SubjectNodeList(i).InnerText  
                dr("Location") = LocationNodeList(i).InnerText  
                dr("StartTime") = DateTime.Parse(StartTimeNodeList(i).InnerText)  
                dr("EndTime") = DateTime.Parse(EndTimeNodeList(i).InnerText)  
                dr("Status") = BusyStatusNodeList(i).InnerText  
                dr("NameID") = Name  
                dr("Name") = Name  
                dr("Type") = InstanceTypeNodeList(i).InnerText  
                dr("RecurrenceRule") = DBNull.Value  
                dr("RecurrenceParentID") = DBNull.Value  
                '0 = "  Instance type: 0-Single appointment<br>"  
                '1 = "  Instance type: 1-Master recurring appointment<br>"  
                '2 = "  Instance type: 2-Single instance, recurring appointment<br>"  
                '3 = "  Instance type: 3-Exception to a recurring appointment<br>"  
                dt.Rows.Add(dr)  
            Next 
        End If 
 
    End Sub 
 
    Function SendRequest(ByVal strCommand As StringByVal strURL As StringByVal strBody As String, _  
        ByRef strStatusText As StringByRef iStatCode As IntegerAs XmlDocument  
 
        Try 
            ' Create a new CredentialCache object and fill it with the network credentials required to access the server.  
            Dim Username As String = System.Configuration.ConfigurationManager.AppSettings("UserForReadingCalendars")  
            Dim Password As String = System.Configuration.ConfigurationManager.AppSettings("PwdForReadingCalendars")  
            Dim strDomain As String = System.Configuration.ConfigurationManager.AppSettings("WindowsDomain")  
 
            Dim myCred As New NetworkCredential(strDomain & "\" & Username, Password)  
            Dim myUri As System.Uri = New System.Uri(strURL)  
            Dim MyCredentialCache As New CredentialCache  
            MyCredentialCache.Add(myUri, "Basic", myCred)  
            ' Create the HttpWebRequest object.  
            Dim objRequest As HttpWebRequest = CType(WebRequest.Create(strURL), HttpWebRequest)  
            ' Add the network credentials to the request.  
            objRequest.Credentials = MyCredentialCache  
            ' Specify the method.  
            objRequest.Method = strCommand  
            ' Set Headers  
            objRequest.KeepAlive = True 
            objRequest.Headers.Set("Pragma""no-cache")  
            objRequest.ContentType = "text/xml" 
 
            'Set the request timeout to 5 minutes  
            objRequest.Timeout = 300000  
 
            If (strBody.Length > 0) Then 
                ' Store the data in a byte array  
                Dim ByteQuery() As Byte = System.Text.Encoding.ASCII.GetBytes(strBody)  
                objRequest.ContentLength = ByteQuery.Length  
                Dim QueryStream As Stream = objRequest.GetRequestStream()  
                ' Write the data to be posted to the Request Stream  
                QueryStream.Write(ByteQuery, 0, ByteQuery.Length)  
                QueryStream.Close()  
            End If 
 
            ' Send the method request and get the response from the server.  
            Dim objResponse As HttpWebResponse = CType(objRequest.GetResponse(), HttpWebResponse)  
            ' Get the Status code  
            iStatCode = objResponse.StatusCode  
            strStatusText = objResponse.StatusDescription  
            ' Get the XML response stream.  
            Dim ResponseStream As System.IO.Stream = objResponse.GetResponseStream()  
            ' Create the XmlDocument object from the XML response stream.  
            Dim ResponseXmlDoc As New System.Xml.XmlDocument  
            ResponseXmlDoc.Load(ResponseStream)  
            ' Clean up.  
            ResponseStream.Close()  
            objResponse.Close()  
            Return ResponseXmlDoc  
 
        Catch ex As Exception  
            Throw ex  
 
        End Try 
 
        Return Nothing 
 
    End Function 
 
End Class 
 

4 Answers, 1 is accepted

Sort by
0
Atanas Korchev
Telerik team
answered on 08 Nov 2007, 02:55 PM
Hi codispdp,

This error indicates that no resource has been populated. This can occur if your datasource returns empty result set.
You can check whether your XmlDataSource returns any data - for example you can try binding a regular dropdownlist control to it.

If this does not help you can open a support ticket and send us your project.

Regards,
Albert
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
0
codispdp
Top achievements
Rank 1
answered on 10 Nov 2007, 10:33 PM
I added a dropdown list and theXMLDatasource is fine I will open a support ticket.
0
Irina
Top achievements
Rank 1
answered on 23 Nov 2007, 02:19 PM
Hi. I also have the same problem. Did you have any success with your support ticket? Has it been fixed yet?  
0
Peter
Telerik team
answered on 23 Nov 2007, 02:32 PM
Hi Irina,

Dan sent us a demo project from which we discovered that the error is caused by a glitch in RadScheduler. Untill we fix it, you can add the resources dynamically from code behind. Here is an example in which the resources come from an xml file:

Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load  
        If (Not IsPostBack) Then 
           '*  *   *  
            RadScheduler1.DataSource = dt  
            InitializeResources()  
            RadScheduler1.DataBind()  
 
        Else 
 
        End If 
    End Sub 
 
    Private Sub InitializeResources()  
        Dim resType As New ResourceType("Members")  
        resType.ForeignKeyField = "NameID" 
        RadScheduler1.ResourceTypes.Add(resType)  
 
        Dim doc As XmlDocument = New XmlDocument()  
        doc.Load(Server.MapPath("~/App_Data/TeamCalendarResources.xml"))  
 
        For Each node As XmlNode In doc.SelectNodes("/names/name")  
            Dim id As String = node.Attributes("NameID").Value  
            Dim desc As String = node.Attributes("NameDesc").Value  
            RadScheduler1.Resources.Add(New Resource("Members", id, desc))  
        Next 
    End Sub 

The above code reads the xml file and creates a resource dynamically which is added to RadScheduler. I hope this offers you an acceptable solution for now. 


Greetings,
Peter
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
Tags
Scheduler
Asked by
codispdp
Top achievements
Rank 1
Answers by
Atanas Korchev
Telerik team
codispdp
Top achievements
Rank 1
Irina
Top achievements
Rank 1
Peter
Telerik team
Share this question
or