Will Tuttle
Will Tuttle

Reputation: 450

Binding RadGrid on button click?

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

Answers (1)

sockfd2
sockfd2

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

Related Questions