Can't call rebind when using aggregate

5 posts, 0 answers
  1. William
    William avatar
    13 posts
    Member since:
    Oct 2018

    Posted 30 Oct 2018 Link to this post

    I'm using advanced data binding and the needdatasource event, but when I try to call rebind I get an exception of type 'System.Reflection.TargetInvocationException'

    Is there a better way to get needdatasource to call again and update the radgrid?

  2. Attila Antal
    Admin
    Attila Antal avatar
    204 posts

    Posted 01 Nov 2018 Link to this post

    Hi Villiam,

    Generally this error appears when calling the Rebind() method in the NeedDataSource event handler. If that is the case, please ensure that Rebind() method is not called in that event. It is also described in the Advanced Data-binding (Using NeedDataSource Event) article. "Important: You should never call the Rebind () method in a NeedDataSource event handler.You should never call DataBind () as well when using advanced data binding through NeedDataSource . For Microsoft GridView -like data binding, see Simple Data-binding."

    Eventually, if you could share the markup and code behind related to the grid we would gladly take a look.

    Kind regards,
    Attila Antal
    Progress Telerik
    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
  3. William
    William avatar
    13 posts
    Member since:
    Oct 2018

    Posted 02 Nov 2018 in reply to Attila Antal Link to this post

    Hi Attila,

    Thanks for the reply.  I am calling rebind in other functions to trip the NeedDataSource event, but not actually in the sub itself.  I'm using the following code:

    Protected Sub RadGrid1_NeedDataSource(sender As Object, e As Telerik.Web.UI.GridNeedDataSourceEventArgs)
        Dim dt As DataTable = FastSQL.SelectQuery(myDataBase, mySelectionString).Tables(0) 'This is a custom class and function we use
        TryCast(RadGrid1, RadGrid).DataSource = dt
    End Sub
     
    Protected Sub btn_Filter_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_Filter.Click
        RadGrid1.Rebind()
    End Sub
     
    Sub SortCommand()
        rptperfdetail.Rebind()
    End Sub

     

    and in the aspx:

    <telerik:RadGrid RenderMode="Lightweight" runat="server" ID="rptperfdetail" AllowSorting="true" OnNeedDataSource="rptperfdetail_NeedDataSource" ClientSettings-Scrolling-ScrollHeight="500" AllowFilteringByColumn="true" ShowFooter="true" ClientSettings-Scrolling-AllowScroll="true" ClientSettings-Scrolling-UseStaticHeaders="true" OnSortCommand="SortCommand" EnableEmbeddedSkins="False" >
        <ItemStyle BackColor="#E2E4FF" Font-Size="10" />
        <AlternatingItemStyle Font-Size="10" />
        <HeaderStyle CssClass="CustomHeader" HorizontalAlign="Center" Font-Size="11" />
    </telerik:RadGrid>

     

    Thank you,

    William

  4. William
    William avatar
    13 posts
    Member since:
    Oct 2018

    Posted 02 Nov 2018 in reply to William Link to this post

    I forgot to add the part that was using aggregate

    <MasterTableView AutoGenerateColumns="false" TableLayout="Fixed">
        <Columns>
            <telerik:GridBoundColumn DataField="User" DataType="System.String" SortExpression="User" HeaderButtonType="TextButton" HeaderStyle-Width="18%" HeaderText="User" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Portal" DataType="System.String" SortExpression="Portal" HeaderButtonType="TextButton" HeaderStyle-Width="17%" ItemStyle-Font-Size="10" HeaderText="Portal" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Date" DataType="System.String" SortExpression="Date" HeaderButtonType="TextButton" HeaderStyle-Width="8%" HeaderText="Date" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Time" DataType="System.String" SortExpression="Time" HeaderButtonType="TextButton" HeaderStyle-Width="8%" HeaderText="Time"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Portal Load Seconds" DataType="System.Int32" SortExpression="Portal Load Seconds" HeaderButtonType="TextButton" HeaderStyle-Width="14%" HeaderText="Portal Load Seconds" AutoPostBackOnFilter="true" Aggregate="Sum" FooterAggregateFormatString="Total Seconds: {0}"></telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Path and Query String" DataType="System.String" SortExpression="Path and Query String" HeaderButtonType="TextButton" HeaderStyle-Width="35%" HeaderText="Path and Query String" AutoPostBackOnFilter="true"></telerik:GridBoundColumn>
        </Columns>
        <EditFormSettings>
            <EditColumn CancelImageUrl="Cancel.gif" InsertImageUrl="Update.gif" UpdateImageUrl="Update.gif">
            </EditColumn>
        </EditFormSettings>
    </MasterTableView>

     

     

  5. Attila Antal
    Admin
    Attila Antal avatar
    204 posts

    Posted 05 Nov 2018 Link to this post

    Hi William,

    Thank you for the additional information.

    For any kind of troubleshooting, I suggest turning AJAX  off temporarily, in case it's enabled. Thus, you will get more descriptive errors. (see Get more descriptive errors by disabling AJAX article for more).

    The code you have shared is working if I bind a dummy DataSource to the grid using DataTables. I am wondering what is happening within the FastSQL.SelectQuery() method. Is this making a select query to an SQL database? If so, can you please run the query manually without using RadGrid and see if that works? I have a feeling that the keywords used in the DataField of some columns contain illegal words (SQL preserved) such as Path, AND. See Reserved Keywords (Transact-SQL) for more. 

    Also, you may want to double check and ensure that the Spaces in the column names (DataField names) are handled accordingly. Here is a StackOverflow article addressing this concern: How do you deal with blank spaces in column names in SQL Server?

    Attached you can find a sample project I've used to test that includes the code snippets provided by you and the grid is working as expected.

    Kind regards,
    Attila Antal
    Progress Telerik
    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top