2013-09-06 2 views
2

У меня есть страница aspx, которая изначально показывает дерево. Когда дочерний узел на дереве нажат, я хочу, чтобы RadGrid на странице был заполнен. Я установил источник данных и выполнил вызов databind(), но он, похоже, не работает. Я также пробовал использовать needDataSource, но у него такая же проблема. Вот мой код:Привязка RadGrid при нажатии кнопки?

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(); 

      } 
     } 


} 

}

Мой ASPX код:

<%@ 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> 

ответ

1

Изменение:

<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 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> 

Проблема ваша AJAX включена, и ваш RadTreeView не имеет разрешения на обновление RadGrid в AJAX.

При использовании RadAjaxManager вы можете удалить обложку RadAjaxPanels.

Кроме того, я не думаю, что Session может быть установлен на Ajax PostBack, но не уверен. Нет необходимости размещать его внутри Session, так как вы можете передать его в качестве параметра через вашу функцию - loadLookupGrid(selectedNode);.

+0

hmm все еще не показано. Если я поставил точку останова сразу после привязки данных(), она показывает, что LookupTable заполнен, сетка имеет свой набор свойств «источник данных», и если я разворачиваю свойство dataSource, он показывает, что у него есть столбцы, но столбцы в сетке zero .. –

+0

Удалил ли сеанс и передал ли ваш выбранныйNode в качестве параметра loadLookupGrid? И могу ли я увидеть, что «ServiceReference1.Service1SoapClient()», этот класс делает? – sockfd

+0

Сервисная ссылка работает правильно. Это просто простой запрос к db и заполняет таблицу данных. Да, я удалил переменную сеанса и условный оператор для тестирования. –

Смежные вопросы