complete postback inside ajaxed radgrid

9 posts, 0 answers
  1. Avi
    Avi avatar
    13 posts
    Member since:
    Jan 2009

    Posted 21 Jun 2010 Link to this post

    Hi,
    I have ajaxed radgrid component (with EditFormSettings) that need to postback on specific case.
    The radgrid contains GridButtonColumn object when clicked it creates excel file and send it through httpresponse.
    I thought I solve the problem by register the buttons at radgrid ItemCreated event
    this is the code:

        protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) 
        { 
            //register all buttons that exports excel files 
            if (e.Item is GridDataItem) 
            { 
                GridDataItem gridItem = e.Item as GridDataItem; 
                try 
                { 
                    TableCell buttonTc = gridItem["exportButton"]; 
                    ControlCollection controls = buttonTc.Controls; 
                    foreach (Control button in controls) 
                    { 
                        ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(button); 
                    } 
                } 
                catch (Exception) { return; } 
            } 
        }  

    it works perfectly till someone opens the EditFormSettings (by clicking on a row).
    after that, it looks like the buttons were somehow unregistered and became ajax again, which means no excel file will open.

    Is there a solution for this?

    thanks.

  2. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 21 Jun 2010 Link to this post

    Hello,

    The following documentation explains how to perform postback for ajaxified controls. I hope that will help you.
    Forcing postback

    Thanks,
    Princy.
  3. Avi
    Avi avatar
    13 posts
    Member since:
    Jan 2009

    Posted 22 Jun 2010 Link to this post

    Thanks Princy,
    But It didn't help me (maybe if you can elaborate).

    I don't understand why after the user fires an ajax event inside the grid, the buttons becomes ajax instead of postback...?


    thanks

  4. Veli
    Admin
    Veli avatar
    2002 posts

    Posted 24 Jun 2010 Link to this post

    Hello Avi,

    If you have export buttons in your edit form that need to postback, you need to also find these buttons using ItemCreated and register them as postback controls:

    protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
    {
        //register all buttons that exports excel files
        if (e.Item is GridEditableItem)
        {
            GridEditableItem gridItem = e.Item as GridEditableItem;
            try
            {
                TableCell buttonTc = gridItem["exportButton"];
                ControlCollection controls = buttonTc.Controls;
                foreach (Control button in controls)
                {
                    ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(button);
                }
            }
            catch (Exception) { return; }
        }
    }

    The difference between the above snippet and your piece of code is that we check for GridEditableItem which also includes the edit forms. We thus find export buttons in the edit form too.

    If this is not the case with your scenario, consider removing the try - catch block to see if you get any exceptions and if they don't tell you something related to this issue.

    Best wishes,
    Veli
    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
  5. Avi
    Avi avatar
    13 posts
    Member since:
    Jan 2009

    Posted 27 Jun 2010 Link to this post

    Thank you Veli,
    My issue is not inside the edit form, the buttons that needs to be postback are the GridButtonColumn which belongs to the RadGrid.
    This is my RadGrid, the last column, exportButton, is the one I have trouble convert to full post back.
            <telerik:RadGrid ID="activityRadGrid" runat="server" width="100%" GridLines="None" 
                PageSize="10" AllowPaging="True" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" 
                OnItemCommand="activityRadGrid_itemCommand" OnItemCreated="RadGrid1_ItemCreated" 
                OnItemDataBound="activityRadGrid_ItemDataBound" 
                AllowMultiRowSelection="false" AllowFilteringByColumn="True"
                <PagerStyle Mode="NextPrevNumericAndAdvanced" /> 
                <SelectedItemStyle BackColor="#f6faf9" /> 
                <MasterTableView Name="masterTableView" Dir="RTL" GroupLoadMode="Server" 
                    DataKeyNames="ID" DataSourceID="SqlDataSource1" 
                    AllowSorting="true" AllowMultiColumnSorting="true" TableLayout="Auto"
                    <HeaderStyle HorizontalAlign="Center" BorderStyle="Groove"/> 
                    <ItemStyle HorizontalAlign="Center" /> 
                    <Columns> 
                        <telerik:GridEditCommandColumn UniqueName="EditCommandColumn" EditText="פתח" Visible="false"
                        </telerik:GridEditCommandColumn> 
                        <telerik:GridBoundColumn DataField="ID" HeaderText="ID" UniqueName="ID" Visible="false" > 
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="source" HeaderText="source" UniqueName="source" Visible="false" > 
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="source_heb" HeaderText="מקור נתונים" UniqueName="source_heb" ItemStyle-HorizontalAlign="Right" > 
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="job_id" HeaderText="מס' תהליך" UniqueName="job_id" FilterControlWidth="30px"
                        </telerik:GridBoundColumn> 
                        <telerik:GridDateTimeColumn DataField="MATCHER_LAST_END_DATE" HeaderText="תאריך סיום הצלבה" UniqueName="MATCHER_LAST_END_DATE" 
                                                 DataFormatString="{0:dd/MM/yy}" PickerType="DatePicker"
                            <HeaderStyle Width="120px" /> 
                        </telerik:GridDateTimeColumn> 
                        <telerik:GridBoundColumn DataField="MATCHER_ACCUM_RECORDS" HeaderText="סהכ רשומות שעברו הצלבה" AllowFiltering="false" 
                                                 UniqueName="MATCHER_ACCUM_RECORDS"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="ACTIVITY_ACCUM_NUMOFDICOVERY" HeaderText="סהכ גילויים שנוצרו" UniqueName="ACTIVITY_ACCUM_NUMOFDICOVERY" AllowFiltering="false"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="ACTIVITY_ACCUM_NUMOFRECLAMTION" HeaderText="סהכ טיובים שנוצרו" AllowFiltering="false" 
                                                 UniqueName="ACTIVITY_ACCUM_NUMOFRECLAMTION"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="ACTIVITY_STATUS" HeaderText="סטטוס פעילות" ItemStyle-Width="15px" AllowFiltering="false" 
                                                 UniqueName="ACTIVITY_STATUS"
                        </telerik:GridBoundColumn> 
                        <telerik:GridButtonColumn Text="צור קובץ" headerText="תוצאות הצלבה" HeaderButtonType="LinkButton" UniqueName="exportButton"  
                                                  CommandName="Export"
                        </telerik:GridButtonColumn> 
                    </Columns> 
                    <EditFormSettings UserControlName="controls\ActivityInnerControl.ascx" EditFormType="WebUserControl"
                        <EditColumn UniqueName="EditCommandColumn1"
                        </EditColumn> 
                    </EditFormSettings> 
                </MasterTableView> 
                <EditItemStyle BackColor="#e8f1f0" BorderStyle="Double"></EditItemStyle> 
                <SelectedItemStyle BorderStyle="None"></SelectedItemStyle>  
                <ClientSettings> 
                    <ClientEvents OnRowClick="RowDblClick" /> 
                </ClientSettings> 
                <GroupingSettings GroupByFieldsSeparator="Status_text" ShowUnGroupButton="true"/> 
            </telerik:RadGrid> 
     

    Thanks again.

  6. Veli
    Admin
    Veli avatar
    2002 posts

    Posted 28 Jun 2010 Link to this post

    Hello Avi,

    Sorry for misunderstanding you, then. The scenario that you describe to be using seems to work OK at my side, though. Attaching a test page you can run locally too. I find the export button in the export column and register it as a postback control through the ScriptManager.

    Greetings,
    Veli
    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
  7. Avi
    Avi avatar
    13 posts
    Member since:
    Jan 2009

    Posted 23 Aug 2010 Link to this post

    Many thanks Veli, it's working now :)

    (Sometimes I feel like running around in circles,
    I wasn't thinking ahead, Now that they are standard buttons, I wont see the "Loading" logo :( )


  8. Steve
    Steve avatar
    6 posts
    Member since:
    Oct 2013

    Posted 13 Mar in reply to Veli Link to this post

    Hello Veli,

    This fixed it for me as well. 

    After I modified my datasource, the grid refreshed as expected, but the export button quit working again (parsing error). So initial loading of the radGrid was okay, but refreshing radGrid data killed it. I even noticed the ITemCreated event fired again to register postback.

    Thanks for any feedback.
    Steve


        protected void RadGridTR_List_ItemCreated(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                if (e.Item is GridDataItem)
                {
                    GridDataItem item = (GridDataItem)e.Item;
                    ImageButton exportButton = (ImageButton)item["Download"].Controls[0];
                    ScriptManager.GetCurrent(Page).RegisterPostBackControl(exportButton);
                }
            }
        }

  9. Eyup
    Admin
    Eyup avatar
    4030 posts

    Posted 18 Mar Link to this post

    Hi Steve,

     

    Thanks for sharing your experience with our community.

    You can also check the javascript approach provided here:

    https://docs.telerik.com/devtools/aspnet-ajax/controls/grid/how-to/Exporting/export-from-ajaxified-grid#export-from-ajaxified-grid

     

    Regards,
    Eyup
    Progress Telerik

    Get quickly onboarded and successful with UI for ASP.NET AJAX with the Virtual Classroom technical trainings, available to all active customers. Learn More.
Back to Top