viewstate being posted when requestItems called

5 posts, 1 answers
  1. CodeR
    CodeR avatar
    36 posts
    Member since:
    Apr 2005

    Posted 06 Aug 2010 Link to this post

    Hi,
    I am using the latest build (2010.2.713.40) of the RadCombobox.
    I have several combos setup which load their items ondemand via the requestItems method.
    I am submitting a parameter via this method which affects which items are returned.

    here is an example of the executed code

    combo.requestItems(

     

    "Client"), false);

     


    I would imagine that the page's current viewstate is irrelevant as far as the requestItems call goes.
    Also the following doco page states that
    "Telerik RadComboBox performs a "light" callback to the server - no ViewState information is sent to the server and the Page.IsPostBack property is set to False when the combobox is in a callback mode."
    http://www.telerik.com/help/aspnet-ajax/combobox-slow-callback.html

    However in my performance profiling via fiddler it appears that the viewstate along with all other form variables are being submitted.
    From Fiddler:
    Bytes Sent:  10,757
    Bytes Received: 1,064

    The bytes received is as I would expect but the sent is rather high.
    Upon further investigation I found the following being submitted in the POST data, note I have omitted a bunch of non-relevant items that make up the full 10kB.

    ctl00_RadScriptManager1_TSM 
    __EVENTTARGET 
    __EVENTARGUMENT 
    __VIEWSTATE /wEPDwUJMjgyMzEyODM5ZBgIBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WJAUUY3RsMDAkRm9ybURlY29yYXRvcjEFFmN0bDAwJGNwaFBhZ2VCb2R5MSRkdGUFImN0bDAwJGNwaFBhZ2VCb2R5MSRfU2hhcmVkQ2FsZW5kYXIFImN0bDAwJGNwaFBhZ2VCb2R5MSRfU2hhcmVkQ2FsZW5kYXIFHWN0bDAwJGNwaFBhZ2VCb2R5MSR0c1R5cGVNZW51BTxjdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cFByb2plY3QkcnB0UHJvamVjdHMkY3RsMDAkZHRlRmlyc3QFRWN0bDAwJGNwaFBhZ2VCb2R5MSR0aW1lRXhwUHJvamVjdCRycHRQcm9qZWN0cyRjdGwwMCRkdGVGaXJzdCRjYWxlbmRhcgVFY3RsMDAkY3BoUGFnZUJvZHkxJHRpbWVFeHBQcm9qZWN0JHJwdFByb2plY3RzJGN0bDAwJGR0ZUZpcnN0JGNhbGVuZGFyBTtjdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cFByb2plY3QkcnB0UHJvamVjdHMkY3RsMDAkZHRlTGFzdAVEY3RsMDAkY3BoUGFnZUJvZHkxJHRpbWVFeHBQcm9qZWN0JHJwdFByb2plY3RzJGN0bDAwJGR0ZUxhc3QkY2FsZW5kYXIFRGN0bDAwJGNwaFBhZ2VCb2R5MSR0aW1lRXhwUHJvamVjdCRycHRQcm9qZWN0cyRjdGwwMCRkdGVMYXN0JGNhbGVuZGFyBT1jdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cEludGVybmFsJHJwdFByb2plY3RzJGN0bDAwJGR0ZUZpcnN0BUZjdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cEludGVybmFsJHJwdFByb2plY3RzJGN0bDAwJGR0ZUZpcnN0JGNhbGVuZGFyBUZjdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cEludGVybmFsJHJwdFByb2plY3RzJGN0bDAwJGR0ZUZpcnN0JGNhbGVuZGFyBTxjdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cEludGVybmFsJHJwdFByb2plY3RzJGN0bDAwJGR0ZUxhc3QFRWN0bDAwJGNwaFBhZ2VCb2R5MSR0aW1lRXhwSW50ZXJuYWwkcnB0UHJvamVjdHMkY3RsMDAkZHRlTGFzdCRjYWxlbmRhcgVFY3RsMDAkY3BoUGFnZUJvZHkxJHRpbWVFeHBJbnRlcm5hbCRycHRQcm9qZWN0cyRjdGwwMCRkdGVMYXN0JGNhbGVuZGFyBTpjdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cExlYXZlJHJwdFByb2plY3RzJGN0bDAwJGR0ZUZpcnN0BTljdGwwMCRjcGhQYWdlQm9keTEkdGltZUV4cExlYXZlJHJwdFByb2plY3RzJGN0bDAwJGR0ZUxhc3QFG2N0bDAwJGNwaFBhZ2VCb2R5MSRyY0NsaWVudAUcY3RsMDAkY3BoUGFnZUJvZHkxJHJjUHJvamVjdAUYY3RsMDAkY3BoUGFnZUJvZHkxJHJjSm9iBRhjdGwwMCRjcGhQYWdlQm9keTEkcmNDb24FHWN0bDAwJGNwaFBhZ2VCb2R5MSRyY0FjdGl2aXR5BRhjdGwwMCRjcGhQYWdlQm9keTEkcmNDSUQFGWN0bDAwJGNwaFBhZ2VCb2R5MSRyY1JhdGUFGmN0bDAwJGNwaFBhZ2VCb2R5MSRyc2xpZGVyBSJjdGwwMCRjcGhQYWdlQm9keTEkUmFkQ29udGV4dE1lbnUxBRhjdGwwMCRjcGhQYWdlQm9keTEkU3BlbGwFJWN0bDAwJGNwaFBhZ2VCb2R5MSRTcGVsbCRkaWFsb2dPcGVuZXIFLGN0bDAwJGNwaFBhZ2VCb2R5MSRTcGVsbCRkaWFsb2dPcGVuZXIkV2luZG93BRxjdGwwMCRjcGhQYWdlQm9keTEkcmFkV2luTWFuBRxjdGwwMCRjcGhQYWdlQm9keTEkd2luU2F2aW5nBRtjdGwwMCRjcGhQYWdlQm9keTEkcndEaWFsb2cFHmN0bDAwJGNwaFBhZ2VCb2R5MSRyd0pvYlN0YXR1cwUaY3RsMDAkY3BoUGFnZUJvZHkxJHJ3VG9vbHMFGGN0bDAwJGNwaFBhZ2VCb2R5MSRyY0Nvbg8UKwACZWVkBRhjdGwwMCRjcGhQYWdlQm9keTEkcmNDSUQPFCsAAgUMKiBVbmFzc2lnbmVkZWQFGWN0bDAwJGNwaFBhZ2VCb2R5MSRyY1JhdGUPFCsAAgUMKiBVbmFzc2lnbmVkZWQFHWN0bDAwJGNwaFBhZ2VCb2R5MSRyY0FjdGl2aXR5DxQrAAJlZWQFGGN0bDAwJGNwaFBhZ2VCb2R5MSRyY0pvYg8UKwACZWVkBRxjdGwwMCRjcGhQYWdlQm9keTEkcmNQcm9qZWN0DxQrAAJlZWQFG2N0bDAwJGNwaFBhZ2VCb2R5MSRyY0NsaWVudA8UKwACBQwqIFVuYXNzaWduZWRlZDRJCMVPR9RwQeFFerRFT57tpozNQftYdSxJut2bZwfA
    __SCROLLPOSITIONX 0
    __SCROLLPOSITIONY 0
    ctl00$cphPageBody1$rcClient * Unassigned
    ctl00_cphPageBody1_rcClient_ClientState 
    __CALLBACKID ctl00$cphPageBody1$rcClient
    __CALLBACKPARAM {"Command":"LOD","Text":"*%20Unassigned","ClientState":{"value":"","text":"* Unassigned","enabled":true,"logEntries":[]},"Context":{"Text":"* Unassigned","NumberOfItems":0},"NumberOfItems":0}

    Am i loading the items incorrectly? or is the viewstate required?
    I am trying to optimise my app to run as quickly as possible. By reducing the bytes uploaded to 1kB or less would be a huge improvement.

    Thanks Telerik or anyone who is able to assist
    Damien
  2. Simon
    Admin
    Simon avatar
    2281 posts

    Posted 06 Aug 2010 Link to this post

    Hello Damien Coyle,

    Thank you for your note.

    Indeed our documentation is wrong - ViewState is transmitted back to the server. This is a 'feature' of the ASP.NET AJAX Framework and our controls are based on it. We will update the documentation to reflect this.

    Now if you want to achieve the best Load On Demand performance I suggest you use a Web Service. Please see this demo for more information and sample code.

    Greetings,
    Simon
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  3. CodeR
    CodeR avatar
    36 posts
    Member since:
    Apr 2005

    Posted 08 Aug 2010 Link to this post

    Simon,
    Thanks for the reply.
    I am now attempting to change my code to make use of a WCF enabled web service as per your doco.
    The viewstate is not being sent but I am still having issues.

    Basically when I debug with fiddler I can see the context info being sent
    {"context":[{"Key":"Text","Value":"* Unassigned"},{"Key":"NumberOfItems","Value":0}]}

    But when I debug the web service the RadComboBoxContext is always set to Nothing. The only difference that I can see with my code and yours is that mine is in VB.NET. I am contemplating rewriting in C# and testing. Is there anything obvious that I have missed?

    Thanks

    Below is my web.config

     

     

     

    <system.serviceModel>
           <behaviors>
               <endpointBehaviors>
                   <behavior name="WSComboHelperAspNetAjaxBehavior">
                       <enableWebScript />
                   </behavior>
               </endpointBehaviors>
               <serviceBehaviors>
                   <behavior name="WSComboHelperAspNetAjaxBehavior" >
                       <serviceMetadata httpGetEnabled="true" />
                   </behavior>
               </serviceBehaviors>
           </behaviors>
           <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
             multipleSiteBindingsEnabled="true" />
           <services>
               <service name="WSComboHelper" behaviorConfiguration="WSComboHelperAspNetAjaxBehavior">
                   <endpoint address="" behaviorConfiguration="WSComboHelperAspNetAjaxBehavior"
                     binding="webHttpBinding" contract="WSComboHelper" />
               </service>
           </services>
       </system.serviceModel>

    and here is the start of my service
    <ServiceContract(Namespace:="")>
    <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
    Public Class WSComboHelper
      
        <OperationContract()>
        Public Function GetClientData(ByVal ContextBoundObject As RadComboBoxContext) As RadComboBoxData

    and my combobox definition
    <telerik:RadComboBox OnClientLoad="ClientReady" ID="rcClient" runat="server" AllowCustomText="false" EnableItemCaching="true" OnClientDropDownOpened="ComboOpen"
               EnableLoadOnDemand="true" OnClientDropDownClosed="ClientSelected" OnClientItemsRequested="ItemsReturned"  OnClientItemsRequesting="ItemsRequesting"
               MarkFirstMatch="false" Text="* Unassigned" Width="100%" Height="200px">
                           <WebServiceSettings Method="GetClientData" Path="WSComboHelper.svc" />   
               </telerik:RadComboBox>

  4. CodeR
    CodeR avatar
    36 posts
    Member since:
    Apr 2005

    Posted 08 Aug 2010 Link to this post

    Simon,
    I just quickly knocked up a mockup implementation in C# and can confirm that the RadcomboboxContext parameter is now correctly being passed. Is this why there aren't any VB.NET examples of the WCF service?

    Damien
  5. Answer
    Simon
    Admin
    Simon avatar
    2281 posts

    Posted 11 Aug 2010 Link to this post

    Hi Damien Coyle,

    The code of the VB version of the WCF service works fine, however is at the bottom of the ComboBoxWcfService.cs file, so you need to scroll a little bit to locate the code. I justed tested the Context object and it was OK.

    We will update the demo to include a separate file for the VB version. Thank you for discovering this and letting us know.

    Best wishes,
    Simon
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Back to Top