【问题标题】:Telerik Grid not showing data after postback in ASP.NET WebFormsTelerik Grid 在 ASP.NET WebForms 中回发后未显示数据
【发布时间】:2016-10-07 18:00:27
【问题描述】:

我正在尝试使用一些基本数据创建 Telerik RadGrid 控件,并且正在使用 here 提供的简单数据绑定方法。

<div id="divRadGrid">
    <telerik:RadGrid ID="RadGrid1" runat="server" OnSortCommand="RadGrid1_SortCommand" AllowSorting="True"></telerik:RadGrid>
</div>

这是后面的代码。当用户单击“运行”按钮时,一切正常。但是,如果我单击网格内的任何事件,例如对列进行排序,我会看到页面刷新,但网格不显示任何内容。

非常感谢任何建议。

using System;
using System.Data;
using System.Collections.Generic;
using Telerik.Web.UI;

namespace TelerikDemoWebAppBlank2
{
    public partial class Default : System.Web.UI.Page
    {
        public DataTable SalespersonProductionDT { get; set; }
        public DataTable NewBusinessDT { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void BtnRun_Click(object sender, EventArgs e)
        {
            getData();
            processNewBusiness();
        }

        protected void RadGrid1_SortCommand(object sender, GridSortCommandEventArgs e)
        {
            dataBindGrid(RadGrid1, NewBusinessDT);
        }

        private void getData()
        {
            SalespersonProductionDT = new DataTable();
            Sprocs._pDash_SalespersonProduction(BeginDate.SelectedDate.Value, EndDate.SelectedDate.Value, SalespersonProductionDT);

            NewBusinessDT = new DataTable();
            Sprocs._pDash_NewBusiness(BeginDate.SelectedDate.Value, EndDate.SelectedDate.Value, NewBusinessDT);
        }

        private void processNewBusiness()
        {
            dataBindChart(RadHtmlChart3, NewBusinessDT);
            dataBindGrid(RadGrid1, NewBusinessDT);
        }

        private void dataBindChart(RadHtmlChart radHtmlChart, DataTable dt)
        {
            radHtmlChart.DataSource = dt;
            radHtmlChart.DataBind();
        }

        private void dataBindGrid(RadGrid radGrid, DataTable dt)
        {
            radGrid.DataSource = dt;
            radGrid.DataBind();
        }
    }
}

【问题讨论】:

  • 尝试在页面加载方法中进行 IsPostBack 检查和绑定,或者将 DataTable 更改为静态
  • 可能你的问题是postback。查看此帖子stackoverflow.com/questions/34544500/…
  • @MethodMan,将我的 DataTable 更改为静态有什么帮助?
  • 你一定不熟悉 Postbacks 以及一旦发送到服务器的数据在加载过程中不会保留在页面上但是设置适当的 postback 检查以及重新绑定,你会看到我是什么谈论..

标签: c# asp.net telerik


【解决方案1】:

如果您使用 RadGrid,您想利用 NeedDataSource 事件。

主要原因是它知道何时绑定数据。您的代码中甚至不需要 RadGrid1_SortCommand

protected void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
   {
       radGrid.Visible = false;
   }
}

protected void BtnRun_Click(object sender, EventArgs e)
{
    radGrid.Visible = true;
    radGrid.Rebind();
}

// Make sure you attach RadGrid_NeedDataSource event to grid inside markup.
protected void RadGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
   var dt = new DataTable();
   Sprocs._pDash_NewBusiness(BeginDate.SelectedDate.Value, 
      EndDate.SelectedDate.Value, dt);

   radGrid.DataSource = dt;
}

【讨论】:

  • 我试过这个,但它似乎不起作用,因为在第一个页面加载时,用户尚未指定 BeginDate 和 EndDate,然后单击运行按钮。所以这些值为 NULL。
  • 您可以在 PageLoad 上隐藏 radGrid;在您单击 BtnRun 按钮之前,它不会调用 NeedDataSource。我更新了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多