Ajax Refresh with Sitefinity
Hi,
I have some pages with the same template and I wish only to update the content and not reload all the pages. Can I use Ajax? If I can could you attach me an example?
Thank you!
Stefano
Hello Stefano,
Here is a sample code with RadGrid. I am also sending you a short video.
using System.Collections.Generic;using Telerik.Sitefinity.Web.UI;using Telerik.Sitefinity.Modules.Pages.Web.UI;using Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit;using System.Web.UI;using System.Web.UI.WebControls;using System.Web;using Telerik.Sitefinity.Web;using Telerik.Sitefinity.Modules.Pages;using Telerik.Sitefinity.Pages.Model;using System.Linq;using System;using Telerik.Web.UI;using System.Web.Security;using Telerik.Sitefinity.Security;using Telerik.Sitefinity.Modules.Forms;using System.Collections;using Telerik.Sitefinity.Fluent.Pages;using Telerik.Sitefinity.Modules.UserProfiles;using Telerik.Sitefinity.Security.Model;using Telerik.Sitefinity.Taxonomies.Data;using Telerik.Sitefinity.Taxonomies;using Telerik.Sitefinity.Taxonomies.Model;using Telerik.Sitefinity.GenericContent.Model;using Telerik.Sitefinity.Blogs.Model;using Telerik.Sitefinity.Modules.GenericContent.Web.UI;using Telerik.Sitefinity.Samples1;namespace Telerik.Sitefinity.Samples [RequireScriptManager] public class SimpleViewCustom : SimpleView public override string LayoutTemplatePath get return layoutTemplatePath; protected override string LayoutTemplateName get return null; protected override void InitializeControls(GenericContainer container) RadGrid1.ItemCommand += new Telerik.Web.UI.GridCommandEventHandler(RadGrid1_ItemCommand); RadGrid1.NeedDataSource += new GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource); void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) var grid = sender as RadGrid; grid.DataSource = CreateDataSource(); void RadGrid1_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e) if (e.CommandName == "Edit") if (e.CommandName == "Delete") if (e.CommandName == "InitInsert") protected virtual IList<DataSourceFake> CreateDataSource() var fake = new List<DataSourceFake>(); for (int i = 0; i < 100; i++) fake.Add(new DataSourceFake(i.ToString(), i.ToString(), i.ToString(), i, i, i, i, i)); return fake; protected virtual RadGrid RadGrid1 get return this.Container.GetControl<RadGrid>("RadGrid1", true); private Sitefinity.Web.UI.PublicControls.BrowseAndEdit.BrowseAndEditToolbar browseAndEditToolbar; private List<BrowseAndEditCommand> commands = new List<BrowseAndEditCommand>(); private const string layoutTemplatePath = "~/SfSamples/Telerik.Sitefinity.Samples1.Resources.SimpleViewCustomTemplate.ascx"; private Guid randomGuid = Guid.Empty; public class DataSourceFake public DataSourceFake(string _longname, string _commonNameDesc, string _containersOrdered, int _price, int _extPrice, int _quoteID, int _lineID, int _enteredByContactID) longname = _longname; commonNameDesc = _commonNameDesc; containersOrdered = _containersOrdered; price = _price; extPrice = _extPrice; quoteID = _quoteID; lineID = _lineID; enteredByContactID = _enteredByContactID; public int quoteID get; set; public string longname get; set; public string commonNameDesc get; set; public string containersOrdered get; set; public int price get; set; public int extPrice get; set; public int lineID get; set; public int enteredByContactID get; set; <telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="true" PageSize="20" AutoGenerateDeleteColumn="True" EnableViewState="true" AutoGenerateEditColumn="True" CellSpacing="0" GridLines="None" Skin="Sitefinity"><MasterTableView AutoGenerateColumns="False" DataKeyNames="quoteID,lineID,enteredByContactID"><CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings><RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"><HeaderStyle Width="20px"></HeaderStyle></RowIndicatorColumn><ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"><HeaderStyle Width="20px"></HeaderStyle></ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="longname" FilterControlAltText="Filter longname column" HeaderText="longname" SortExpression="longname" UniqueName="longname"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="commonNameDesc" FilterControlAltText="Filter commonNameDesc column" HeaderText="commonNameDesc" SortExpression="commonNameDesc" UniqueName="commonNameDesc"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="containersOrdered" FilterControlAltText="Filter containersOrdered column" HeaderText="containersOrdered" SortExpression="containersOrdered" UniqueName="containersOrdered"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="price" FilterControlAltText="Filter price column" HeaderText="price" ReadOnly="True" SortExpression="price" UniqueName="price"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="extPrice" FilterControlAltText="Filter extPrice column" HeaderText="extPrice" ReadOnly="True" SortExpression="extPrice" UniqueName="extPrice"> </telerik:GridBoundColumn> </Columns><EditFormSettings><EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn></EditFormSettings></MasterTableView><FilterMenu EnableImageSprites="False"></FilterMenu><HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"></HeaderContextMenu></telerik:RadGrid>I see the video but I want change the page also I need only a panel that refresh only and not reload the page because the template is the same for all the pages.
Stefano
Hello Stefano,
When you use RadAjaxManagerProxy and set AjaxSetting you will not reload the entire page, but only the control that is being modified will trigger the RadAjaxLoadingPanel.
Regards,
Ivan Dimitrov
the Telerik team
Maybe I'm wrong to explained. I have, for example, 2 pages with the same template(masterpage); the template is divided in 2 ContentPlaceholder: there is a common navigation menu for different pages. When i click on the menu to change into a different page Can I use Ajax to refresh only the content of the next page (the content can be an image or text). Everytime that i want to access a new page i want to load just an specific element of the body page . Could you please send me an example or some guidelines ?
Hi Stefano,
You can use an iframe to do this or some control that shows the data that comes from a data storage and it is specific to a given page- standard ajax update of a control
Regards,
Ivan Dimitrov
the Telerik team
How can I use the Iframe? I put the Iframe on the ContentPlaceHolder but it doesn't work...I don't understand what you mean about the second solution. Can you give me more details?