У меня есть страница 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>
hmm все еще не показано. Если я поставил точку останова сразу после привязки данных(), она показывает, что LookupTable заполнен, сетка имеет свой набор свойств «источник данных», и если я разворачиваю свойство dataSource, он показывает, что у него есть столбцы, но столбцы в сетке zero .. –
Удалил ли сеанс и передал ли ваш выбранныйNode в качестве параметра loadLookupGrid? И могу ли я увидеть, что «ServiceReference1.Service1SoapClient()», этот класс делает? – sockfd
Сервисная ссылка работает правильно. Это просто простой запрос к db и заполняет таблицу данных. Да, я удалил переменную сеанса и условный оператор для тестирования. –