Reputation: 450
I have an aspx page that initially shows a treeview. When a child node on the tree is pressed, i want a RadGrid on the page to be populated. I set the datasource and do a databind() call but it doesn't seem to be working. I've also tried using needDataSource but it has the same problem. Here's my code:
namespace MCMwebapp{ public partial class frmLookupTables : System.Web.UI.Page
{
int CurrentDemog;
bool LookupDataLoaded;
bool isOPS = false;
string selectedNode;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
}
protected void LookupsTree_NodeClick(object sender, Telerik.Web.UI.RadTreeNodeEventArgs e)
{
RadTreeNode currNode = e.Node;
if (currNode.Nodes.Count == 0) {
if (currNode.ParentNode.Text != "Treatments" && !String.IsNullOrEmpty(currNode.Text))
{
selectedNode = currNode.Text;
Session["selectedNode"] = selectedNode;
loadLookupGrid();
}
}
}
protected void loadLookupGrid()
{
using (ServiceReference1.Service1SoapClient myService = new ServiceReference1.Service1SoapClient())
{
if (Session["selectedNode"] != null)
{
LookupGrid.DataSource = myService.getTable();
LookupGrid.Databind();
}
}
}
}
My aspx code:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="frmLookupTables.aspx.cs" Inherits="MCMwebapp.frmLookupTables" %>
<asp:Label ID="LookupLabel" runat="server"></asp:Label>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="LookupGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="LookupGrid" LoadingPanelID="TablePanel"></telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxPanel ID="TreePanel" runat="server" HorizontalAlign="NotSet" style="background-color:#808080; float:left" Width="40%">
<telerik:RadTreeView ID="LookupsTree" runat="server" OnClientNodeClicked="ClientNodeClicked" OnNodeClick="LookupsTree_NodeClick">
</telerik:RadTreeView>
</telerik:RadAjaxPanel>
<telerik:RadAjaxLoadingPanel ID="TablePanel" runat="server" HorizontalAlign="Right"
style="background-color:#E92326; float:right" Width="40%" >
<telerik:RadGrid ID="LookupGrid" runat="server" BackColor="Gray"
BorderColor="#404040" BorderStyle="Solid" CellSpacing="0" GridLines="None"
Skin="MetroTouch">
<FilterMenu EnableImageSprites="False">
</FilterMenu>
</telerik:RadGrid>
</telerik:RadAjaxLoadingPanel>
<script type="text/javascript">
function ClientNodeClicked(sender, eventArgs) {
var node = eventArgs.get_node();
node.toggle();
}
</script>
Upvotes: 2
Views: 2756
Reputation: 545
Change:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="LookupGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="LookupGrid" LoadingPanelID="TablePanel"></telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
Into:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="LookupsTree">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="LookupGrid" LoadingPanelID="TablePanel"></telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="LookupGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="LookupGrid" LoadingPanelID="TablePanel"></telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
The problem is your AJAX is enabled, and your RadTreeView
does not have the permission to update the RadGrid
in AJAX.
When using the RadAjaxManager
, you can remove the embracing RadAjaxPanels
.
Also, I don't think the Session
can be set on an Ajax PostBack, not sure though. There is no need to put it inside the Session
, as you can pass it as a parameter through your function - loadLookupGrid(selectedNode);
.
Upvotes: 1