Hi,
I have a 3 level hierarchical grid.It is populated programatically (i.e. through 'DetailTableDataBind')
Each row in the middle-level grid has a hyperlink, which if pressed causes a dialog to be displayed (through RadWindowManager).
When the dialog is closed (by clicking 'Save'), the dialog closed, and calls a 'refreshGrid' function in the parent.
The 'refreshGrid' then does a 'ajaxRequest("RebindAndNavigate")'.
All pretty standard stuff, except it doesn't seem to refresh the contents of the 3rd level grid.
Am I missing something- does the rebind refresh all displayed 'programmatic-populated' children tables?
Cheers,
Steve
I have a 3 level hierarchical grid.It is populated programatically (i.e. through 'DetailTableDataBind')
Each row in the middle-level grid has a hyperlink, which if pressed causes a dialog to be displayed (through RadWindowManager).
When the dialog is closed (by clicking 'Save'), the dialog closed, and calls a 'refreshGrid' function in the parent.
The 'refreshGrid' then does a 'ajaxRequest("RebindAndNavigate")'.
All pretty standard stuff, except it doesn't seem to refresh the contents of the 3rd level grid.
Am I missing something- does the rebind refresh all displayed 'programmatic-populated' children tables?
Cheers,
Steve
3 Answers, 1 is accepted
0
Jayesh Goyani
Top achievements
Rank 2
answered on 30 Jun 2012, 10:37 AM
Hello Steve,
TelerikPage.aspx
TelerikPage.aspx.cs
TelerikPopup.aspx
TelerikPopup.aspx.cs
Thanks,
Jayesh Goyani
TelerikPage.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TelerikPage.aspx.cs" Inherits="TelerikPage" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function openpopup(id, Parentid) { var oWnd = radopen("TelerikPopup.aspx?id=" + id + "&Parentid=" + Parentid, "RadWindow1"); oWnd.show(); return false; } function OnClientClose(oWnd, args) { var arg = args.get_argument(); if (arg) { var ajaxManager = $find("<%= RadAjaxManager1.ClientID %>"); ajaxManager.ajaxRequest("RebindChild" +","+ arg); } } </script> </telerik:RadCodeBlock></head><body> <form id="form1" runat="server"> <div> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadWindowManager ID="RadWindowManager1" runat="server" OnClientClose="OnClientClose"> <Windows> <telerik:RadWindow ID="RadWindow1" runat="server" OnClientClose="OnClientClose"> </telerik:RadWindow> </Windows> </telerik:RadWindowManager> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" onajaxrequest="RadAjaxManager1_AjaxRequest"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnDetailTableDataBind="RadGrid1_DetailTableDataBind" OnItemDataBound="RadGrid1_ItemDataBound"> <MasterTableView DataKeyNames="ID" HierarchyLoadMode="Client"> <Columns> <telerik:GridBoundColumn HeaderText="ID" DataField="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Name" DataField="Name" UniqueName="Name"> </telerik:GridBoundColumn> </Columns> <DetailTables> <telerik:GridTableView Name="Child"> <Columns> <telerik:GridTemplateColumn> <ItemTemplate> <asp:LinkButton ID="lnk1" runat="server">open popup</asp:LinkButton> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn HeaderText="ID" DataField="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Name" DataField="Name" UniqueName="Name"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> </MasterTableView> </telerik:RadGrid> </div> </form></body></html>TelerikPage.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Web.UI;public partial class TelerikPage : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { dynamic data = new[] { new { ID = 1, Name ="Name1"}, new { ID = 2, Name = "Name2"}, new { ID = 3, Name = "Name3"} }; RadGrid1.DataSource = data; } protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e) { string str = e.DetailTableView.ParentItem.GetDataKeyValue("ID").ToString(); string strtemp = string.Empty; if (Session["CheckIsUpdate"] != null) { strtemp = Session["CheckIsUpdate"].ToString(); } dynamic data = new[] { new { ID = 11, Name ="Name11"+strtemp}, new { ID = 22, Name = "Name22"+strtemp}, new { ID = 33, Name = "Name33"+strtemp} }; e.DetailTableView.DataSource = data; } protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem && e.Item.OwnerTableView.Name == "Child") { GridDataItem item = e.Item as GridDataItem; LinkButton lnk1 = item.FindControl("lnk1") as LinkButton; lnk1.Attributes.Add("onclick", "return openpopup('" + item.GetDataKeyValue("ID") + "','" + item.OwnerTableView.ParentItem.GetDataKeyValue("ID") + "' );"); } } protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e) { string[] str = e.Argument.Split(','); if(str.Length == 2) { if (str[0].ToString() == "RebindChild") { foreach (GridDataItem item in RadGrid1.MasterTableView.Items) { if (item.HasChildItems && item.GetDataKeyValue("ID").ToString() == str[1].ToString()) { item.ChildItem.NestedTableViews[0].Rebind(); } } } } }}TelerikPopup.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TelerikPopup.aspx.cs" Inherits="TelerikPopup" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function GetRadWindow() { var oWindow = null; if (window.radWindow) oWindow = window.radWindow; else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; return oWindow; } function returnToParent() { var oWnd = GetRadWindow(); var parentId = "<%= MyProperty %>"; oWnd.close(parentId); } </script> </telerik:RadCodeBlock></head><body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" Text="Save" OnClientClick="returnToParent(); return false;" /> </div> </form></body></html>TelerikPopup.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class TelerikPopup : System.Web.UI.Page{ public string MyProperty { get { if (Request.QueryString["Parentid"] != null) { return Request.QueryString["Parentid"].ToString(); } else { return string.Empty; } } } protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["id"] != null) { Response.Write(Request.QueryString["id"].ToString()); Session["CheckIsUpdate"] =DateTime.Now; } }}Thanks,
Jayesh Goyani
0
Steve
Top achievements
Rank 1
answered on 02 Jul 2012, 02:58 PM
Jayesh, Hi,
Thanks for that.
How do I use RebindChild for the 3rd level in the hierarchy?
For example, the grid has
+ Level 1
+ Level 2
Level 3
A button at level 2 calls a dialog to be displayed.
When the dialog is closed, an extra record/row is added to Level 3. What I need is for the level 3 'child grid' to be refreshed.
Hope this makes sense!
Cheers,
Steve
Thanks for that.
How do I use RebindChild for the 3rd level in the hierarchy?
For example, the grid has
+ Level 1
+ Level 2
Level 3
A button at level 2 calls a dialog to be displayed.
When the dialog is closed, an extra record/row is added to Level 3. What I need is for the level 3 'child grid' to be refreshed.
Hope this makes sense!
Cheers,
Steve
0
Jayesh Goyani
Top achievements
Rank 2
answered on 03 Jul 2012, 06:18 AM
Hello Steve,
TelerikPopup.aspx
TelerikPopup.aspx.cs
TelerikPage.aspx
TelerikPage.aspx.cs
Thanks,
Jayesh Goyani
TelerikPopup.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TelerikPopup.aspx.cs" Inherits="TelerikPopup" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <style type="text/css"> .chklstMaxwidth { height:100px; overflow:scroll; } </style> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function GetRadWindow() { var oWindow = null; if (window.radWindow) oWindow = window.radWindow; else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; return oWindow; } function returnToParent() { var oWnd = GetRadWindow(); var parentId = "<%= MyPropertyFirstParent %>" + "," + "<%= MyPropertySecondParent %>"; oWnd.close(parentId); } </script> </telerik:RadCodeBlock></head><body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" Text="Save" OnClientClick="returnToParent(); return false;" /> </div> </form></body></html>TelerikPopup.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class TelerikPopup : System.Web.UI.Page{ public string MyPropertyFirstParent { get { if (Request.QueryString["Parentid"] != null) { return Request.QueryString["Parentid"].ToString(); } else { return string.Empty; } } } public string MyPropertySecondParent { get { if (Request.QueryString["id"] != null) { return Request.QueryString["id"].ToString(); } else { return string.Empty; } } } protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["id"] != null) { Response.Write(Request.QueryString["id"].ToString()); Session["CheckIsUpdate"] =DateTime.Now; } }}TelerikPage.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TelerikPage.aspx.cs" Inherits="TelerikPage" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function openpopup(id, Parentid) { var oWnd = radopen("TelerikPopup.aspx?id=" + id + "&Parentid=" + Parentid, "RadWindow1"); oWnd.show(); return false; } function OnClientClose(oWnd, args) { var arg = args.get_argument(); if (arg) { var ajaxManager = $find("<%= RadAjaxManager1.ClientID %>"); ajaxManager.ajaxRequest("RebindChild" + "," + arg); } } </script> </telerik:RadCodeBlock></head><body> <form id="form1" runat="server"> <div> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadWindowManager ID="RadWindowManager1" runat="server" OnClientClose="OnClientClose"> <Windows> <telerik:RadWindow ID="RadWindow1" runat="server" OnClientClose="OnClientClose"> </telerik:RadWindow> </Windows> </telerik:RadWindowManager> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnDetailTableDataBind="RadGrid1_DetailTableDataBind" OnItemDataBound="RadGrid1_ItemDataBound"> <MasterTableView DataKeyNames="ID" HierarchyLoadMode="Client"> <Columns> <telerik:GridBoundColumn HeaderText="ID" DataField="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Name" DataField="Name" UniqueName="Name"> </telerik:GridBoundColumn> </Columns> <DetailTables> <telerik:GridTableView Name="Child1" DataKeyNames="ID"> <Columns> <telerik:GridTemplateColumn> <ItemTemplate> <asp:LinkButton ID="lnk1" runat="server">open popup</asp:LinkButton> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn HeaderText="ID" DataField="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Name" DataField="Name" UniqueName="Name"> </telerik:GridBoundColumn> </Columns> <DetailTables> <telerik:GridTableView Name="Child2"> <Columns> <telerik:GridBoundColumn HeaderText="ID" DataField="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Name" DataField="Name" UniqueName="Name"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> </telerik:GridTableView> </DetailTables> </MasterTableView> </telerik:RadGrid> <br /> </div> </form></body></html>TelerikPage.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Web.UI;public partial class TelerikPage : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { dynamic data = new[] { new { ID = 1, Name ="Name1"}, new { ID = 2, Name = "Name2"}, new { ID = 3, Name = "Name3"} }; RadGrid1.DataSource = data; } protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e) { if (e.DetailTableView.Name == "Child1") { dynamic data = new[] { new { ID = 11, Name ="Name11"}, new { ID = 22, Name = "Name22"}, new { ID = 33, Name = "Name33"} }; e.DetailTableView.DataSource = data; } else { string str = e.DetailTableView.ParentItem.GetDataKeyValue("ID").ToString(); string strtemp = string.Empty; if (Session["CheckIsUpdate"] != null) { strtemp = Session["CheckIsUpdate"].ToString(); } dynamic data = new[] { new { ID = 11, Name ="Name111"+strtemp}, new { ID = 22, Name = "Name222"+strtemp}, new { ID = 33, Name = "Name333"+strtemp} }; e.DetailTableView.DataSource = data; } } protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem && e.Item.OwnerTableView.Name == "Child1") { GridDataItem item = e.Item as GridDataItem; LinkButton lnk1 = item.FindControl("lnk1") as LinkButton; lnk1.Attributes.Add("onclick", "return openpopup('" + item.GetDataKeyValue("ID") + "','" + item.OwnerTableView.ParentItem.GetDataKeyValue("ID") + "' );"); } } protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e) { string[] str = e.Argument.Split(','); if (str.Length == 3) { if (str[0].ToString() == "RebindChild") { foreach (GridDataItem item in RadGrid1.MasterTableView.Items) { if (item.HasChildItems && item.GetDataKeyValue("ID").ToString() == str[1].ToString()) { foreach (GridDataItem itemc1 in item.ChildItem.NestedTableViews[0].Items) { if (itemc1.GetDataKeyValue("ID").ToString() == str[2].ToString()) { itemc1.ChildItem.NestedTableViews[0].Rebind(); } } } } } } }}Thanks,
Jayesh Goyani