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

Unable to ajaxify the Grid

4 Answers 101 Views
Grid
This is a migrated thread and some comments may be shown as answers.
sathies
Top achievements
Rank 1
sathies asked on 27 Dec 2008, 12:18 PM
I create a small application in server side which performs same function like EnableHeaderContextMenu. And also i save the selected  column name  in Database, so that the next time the grid loads with the column which is saved  in the database.Everything is done fine without ajax. But  when I tried for ajax  the  column is not updated in the grid. Please help me in this reqard. I am using Master page  for ajax.

main.aspx.cs:

 protected void Page_Load(object sender, EventArgs e)  
        {  
            RadAjaxManager manager = RadAjaxManager.GetCurrent(Page);  
            manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest);  
        }  
 
        protected void manager_AjaxRequest(object sender, AjaxRequestEventArgs e)  
        {  
              
 
            if (e.Argument == "Rebind")  
 
            {  
 
                RadGrid grid = pnlCompany.FindControl("radGvProspectList"as RadGrid;  
                grid = objGrid.CreateGrid("GetProspect""Prospect");  
                 grid.Rebind();  
 
              
            }  
        }    
 
 
        protected void Page_Init(object sender, System.EventArgs e)  
        {  
             
             radgrid = CreateGrid("GetProspect""Prospect");  
            radgrid.ID = "radGvProspectList";  
            //radgrid.ItemCommand += new GridCommandEventHandler(radgrid_ItemCommand);  
            //radgrid.SelectedIndexChanged += new EventHandler(radgrid_SelectedIndexChanged);  
 
            pnlCompany.Controls.Add(radgrid);  
 
 
        }  
 
 
Main.aspx:
<asp:Panel ID="pnlCompany" runat="server" Height="700px" Width="700px">  
         
        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
         <script language="javascript">  
        function refreshGrid()  
                {  
                      
                  $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("Rebind");  
                      
                }  
 
        </script> 
          
        </telerik:RadCodeBlock> 
         
               
    </asp:Panel> 

GeneralGrid.cs:
 public class GridStructure:System.Web.UI.Page  
    {  
 
          
         private DataTable dbsource;  
public void Set(DataTable dt)  
{  
dbsource= dt;  
}  
public DataTable Get()  
{  
return dbsource;  
}  
 
        
 
             
 
         
 
 
         public RadGrid CreateGrid(string SPName,string PageName)  
        {  
              
 
 
 
            GridConfig temp = new GridConfig();  
            SelectBL objSelectBL;  
 
 
            DataTable dtLogin, dtGrid;  
            // for sendind sql stored procedure's parameteres  
            object[] arrSpParameters, parm;  
            RadGrid objRadGrid = new RadGrid();  
            ArrayList colname = new ArrayList();  
 
            dtLogin = new DataTable();  
            dtGrid = new DataTable();  
            objSelectBL = new SelectBL();  
            arrSpParameters = new object[2];  
            arrSpParameters[0] = 21;// Session["UserID"];  
            arrSpParameters[1] = PageName;  
 
 
            dtGrid = objSelectBL.Retrieve(SPName);  
            string[] gridDataKeyNames = new string[dtGrid.Columns.Count];  
            int k = 0;  
            foreach (DataColumn dc in dtGrid.Columns)  
            {  
                colname.Add(dc.ColumnName.ToString());  
                gridDataKeyNames[k] = dc.ColumnName.ToString();  
                k++;  
            }  
 
            foreach (string column in colname)  
            {  
                objRadGrid.MasterTableView.Columns.Add(CreateColumn(column));  
 
            }  
 
             
            Session["ColumnName"] = colname;  
            Session["PageName"] = PageName;  
            objRadGrid.MasterTableView.DataKeyNames = gridDataKeyNames;  
 
            objRadGrid.Skin = "Outlook";  
            objRadGrid.Width = Unit.Percentage(100);  
            objRadGrid.AllowPaging = true;  
            objRadGrid.AllowSorting = true;  
            objRadGrid.PagerStyle.Mode = GridPagerMode.NextPrevNumericAndAdvanced;  
            objRadGrid.AutoGenerateColumns = false;  
            objRadGrid.ShowStatusBar = true;  
            objRadGrid.MasterTableView.EnableColumnsViewState = false;  
            objRadGrid.ClientSettings.Selecting.AllowRowSelect = true;  
            objRadGrid.ClientSettings.EnablePostBackOnRowClick = true;  
            objRadGrid.MasterTableView.PageSize = 19;  
            objRadGrid.SelectedItemStyle.BackColor = System.Drawing.Color.AliceBlue;  
 
            objRadGrid.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;  
            objRadGrid.ItemCommand += new GridCommandEventHandler(objRadGrid_ItemCommand);  
            objRadGrid.NeedDataSource += new GridNeedDataSourceEventHandler(objRadGrid_NeedDataSource);  
            objRadGrid.PreRender += new EventHandler(objRadGrid_PreRender);  
            objRadGrid.MasterTableView.CommandItemTemplate = temp;  
 
 
 
            dbsource = dtGrid;  
 
              
 
 
              
 
 
             
              
 
              
 
             
            return objRadGrid;  
 
 
        }  
 
         void objRadGrid_PreRender(object sender, EventArgs e)  
         {  
             RadGrid objRadGrid = (RadGrid)sender;  
             GridConfig temp = new GridConfig();  
             SelectBL objSelectBL;  
 
 
             DataTable dtLogin, dtGrid;  
             // for sendind sql stored procedure's parameteres  
             object[] arrSpParameters, parm;  
              
             ArrayList colname = new ArrayList();  
 
             dtLogin = new DataTable();  
             dtGrid = new DataTable();  
             objSelectBL = new SelectBL();  
             arrSpParameters = new object[2];  
             arrSpParameters[0] = 21;// Session["UserID"];  
             arrSpParameters[1] = "Prospect";  
             ArrayList result = new ArrayList();  
 
             dtLogin = objSelectBL.Retrieve("GetGridRights", arrSpParameters);  
             if (dtLogin.Rows.Count > 0)  
             {  
                 string strContent = Convert.ToString(dtLogin.Rows[0][0]);  
                 if (strContent != string.Empty)  
                 {  
                     string[] te = strContent.Split('#');  
                       
                     foreach (string sqe in te)  
                     {  
                         result.Add(sqe);  
                     }  
                 }  
             }  
 
             Session["DiffColumn"] = result;  
 
             foreach(GridColumn c in objRadGrid.Columns)  
             {  
                 if (result.Contains(c.HeaderText))  
                 {  
                     c.Display = false;  
                 }  
                   
             }  
         }  
 
           
 
           
 
         void objRadGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)  
         {  
             RadGrid objRadGrid = (RadGrid)source;  
             objRadGrid.DataSource = dbsource;  
               
         }  
 
        void objRadGrid_ItemCommand(object source, GridCommandEventArgs e)  
        {  
            RadGrid objRadGrid = (RadGrid)source;  
 
            if (e.CommandName == "Configure")  
            {  
                RadWindow objRadWindow = new RadWindow();  
                objRadWindow.OpenerElementID = objRadGrid.ClientID;  
                objRadWindow.OffsetElementID = objRadGrid.ClientID;  
                objRadWindow.VisibleOnPageLoad = true;  
 
                  
                objRadWindow.NavigateUrl = "~/Common Page/Configure.aspx";  
                 
 
                objRadGrid.Controls.Add(objRadWindow);  
 
            }  
        }  
 
 
 
 
          
 
        public GridBoundColumn CreateColumn(string column)  
        {  
 
            GridBoundColumn boundColumn = new GridBoundColumn();  
            boundColumn.DataField = column;  
            boundColumn.HeaderText = column;  
            boundColumn.UniqueName = column;  
 
            return boundColumn;  
        }  
 
 
 
 
 
 
 
 
 

Configure.aspx.cs:

 public partial class Configure : System.Web.UI.Page  
    {  
         
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!Page.IsPostBack)  
            {  
                ArrayList colum = (ArrayList)Session["ColumnName"];  
 
                    foreach (string regionRow in colum)  
                    {  
 
                        RadTreeNode regionNode = new RadTreeNode(regionRow);  
                        regionNode.Checked = true;  
                        RadTreeView1.Nodes.Add(regionNode);  
                    }  
                    RadTreeView1.CheckBoxes = true;  
                    ArrayList diffcolumn = (ArrayList)Session["DiffColumn"];  
 
                       if (diffcolumn != null)  
                    {  
                        foreach (string node in diffcolumn)  
                        {  
                            RadTreeNode nodetext = RadTreeView1.FindNodeByText(node);  
                            nodetext.Checked = false;  
 
                        }  
                    }  
                    else {  
 
                        foreach (string node in colum)  
                        {  
                            RadTreeNode nodetext = RadTreeView1.FindNodeByText(node);  
                            nodetext.Checked = true;  
 
                        }  
                    }  
            }  
        }  
 
        protected void Button1_Click(object sender, EventArgs e)  
        {  
                           StringBuilder temp = new StringBuilder();  
                StringBuilder order = new StringBuilder();  
 
                CRUDActivitiesBL objInsert = new CRUDActivitiesBL();  
 
                object[] arrSpParameters = new object[3];  
 
                foreach (RadTreeNode node in RadTreeView1.GetAllNodes())  
                {  
 
 
 
                    if (node.Checked == true)  
                    {  
 
                        order.Append(node.Text.Trim());  
                        order.Append("#");  
 
                    }  
 
                    else 
                    {  
 
                        temp.Append(node.Text.Trim());  
                        temp.Append("#");  
 
                    }  
 
                }  
                if (order.Length > 0)  
                {  
 
                    order.Remove(order.Length - 1, 1);  
                }  
                if (temp.Length > 0)  
                {  
                    temp.Remove(temp.Length - 1, 1);  
                }  
                arrSpParameters[0] = 21;  
                arrSpParameters[1] = "Prospect";  
                arrSpParameters[2] = temp.ToString();  
                int result = CRUDActions("GetRights", arrSpParameters);  
              
 
 
            ClientScript.RegisterStartupScript(Page.GetType(), "mykey""CloseAndRebind();"true);  
        }  
 
        protected void RadTreeNodeDrop(object sender, RadTreeNodeDragDropEventArgs e)  
        {  
            RadTreeNode sourceNode = e.SourceDragNode;  
            RadTreeNode destNode = e.DestDragNode;  
            RadTreeViewDropPosition dropPosition = e.DropPosition;  
 
            if (destNode != null)//drag&drop is performed between trees  
            {  
                if (sourceNode.Equals(destNode) || sourceNode.IsAncestorOf(destNode))  
                {  
                    return;  
                }  
                sourceNode.Owner.Nodes.Remove(sourceNode);  
 
                switch (dropPosition)  
                {  
                    //case RadTreeViewDropPosition.Over:  
                    //    // child  
                    //    if (!sourceNode.IsAncestorOf(destNode))  
                    //    {  
                    //        destNode.Nodes.Add(sourceNode);  
                    //    }  
                    //    break;  
 
                    case RadTreeViewDropPosition.Above:  
                          
                        destNode.InsertBefore(sourceNode);  
                                                break;  
 
                    case RadTreeViewDropPosition.Below:  
                                                destNode.InsertAfter(sourceNode);  
 
                                               break;  
                }  
            }  
        }  
 
 

Configure.aspx;

<div>  
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
         
          
         <script type="text/javascript">  
        function CloseAndRebind()  
        {  
          
                 
            GetRadWindow().Close();  
            GetRadWindow().BrowserWindow.refreshGrid();  
        }  
          
        function GetRadWindow()  
        {  
            var oWindow = null;  
            if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog  
            else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)  
                  
            return oWindow;  
        }  
 
 
 
          
        </script>  
     </telerik:RadCodeBlock>  
        <asp:ScriptManager ID="ScriptManager1" runat="server">  
        </asp:ScriptManager>  
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />  
          
          
         
        
        <telerik:RadTreeView ID="RadTreeView1"  EnableDragAndDrop="true" EnableDragAndDropBetweenNodes="true" OnNodeDrop="RadTreeNodeDrop" runat="server">  
        </telerik:RadTreeView>  
          
          
    </div> 

4 Answers, 1 is accepted

Sort by
0
sathies
Top achievements
Rank 1
answered on 08 Jan 2009, 01:41 PM
Hi,

when ajaxify above code it gives the following error

Microsoft JScript runtime error: Sys.InvalidOperationException: Handler was not added through the Sys.UI.DomEvent.addHandler method.

how to solve this error or what is the meaning for this error

regard
sathies
0
Sebastian
Telerik team
answered on 08 Jan 2009, 01:54 PM
Hello sathies,

I think that a combination of the solutions presented in the following sample projects:

http://www.telerik.com/community/code-library/aspnet-ajax/general/show-hide-grid-columns-with-radmenu-as-context-menu.aspx
http://www.telerik.com/help/aspnet-ajax/grdsavingsettingsonperuserbasis.html

Feel free to modify/extend the approaches demonstrated in the code library threads to meet your custom requirements.

Best regards,
Sebastian
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
sathies
Top achievements
Rank 1
answered on 13 Jan 2009, 12:08 PM
Hello Sebastian,

Thanks for your Feedback, I went through the link and I modified the code.

Now I am facing the following  new problem

sometimes the page loads very fast and sometimes the page loads very slow and I couldn't figure out the issue.

In a particular page I used the following
a) Master Page concept
b)three  dynamic grid in page init
c)Tab strip and multipageview concept
d)rad controls

e)trial version of Q3
f) some  controls are Ajaxified
e)10 or more Panel controls

Please help me  to overcome above problems  and is it due to trial version?

regards
Sathies

0
Sebastian
Telerik team
answered on 13 Jan 2009, 01:21 PM
Hello sathies,

Unfortunately as you specified the slow-down you encountered is intermittent and I cannot say for certain what might be the reason for it. To optimize the performance of the controls you have as much as possible, consider the techniques presented in the online resources listed below:

http://www.telerik.com/products/aspnet-ajax/resources/top-performance.aspx
http://www.telerik.com/help/aspnet-ajax/gridoverview.html (Chapter "Performance tips and tricks")

Best regards,
Sebastian
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Tags
Grid
Asked by
sathies
Top achievements
Rank 1
Answers by
sathies
Top achievements
Rank 1
Sebastian
Telerik team
Share this question
or