2016-10-07 10 views
0

いくつかの基本データでTelerik RadGridコントロールを作成しようとしていますが、hereのSimple Data Bindメソッドを使用しています。TelerikグリッドがASP.NET WebFormsでポストバック後にデータを表示しない

<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(); 
     } 
    } 
} 
+1

おそらくあなたの問題は、 'postback'であるあなたのIsPostBackプロパティのチェックを行うと、ページの読み込み方法で結合してみてくださいまたは静的 – MethodMan

+0

するのDataTableを変更します。この記事をチェックしてください。http://stackoverflow.com/questions/34544500/get-text-value-from-textbox-after-value-text-changed-server-side –

+0

@MethodMan、私のDataTableをStaticヘルプに変更するには? – Pavel

答えて

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; 
} 
+0

これは、最初のページの読み込みで、ユーザーがまだBeginDateとEndDateを指定せず、[実行]ボタンをクリックしたために機能していないようです。そのため、これらの値はNULLです。 – Pavel

+0

PageLoadでradGridを非表示にできます。 BtnRunボタンをクリックするまで、NeedDataSourceは呼び出されません。私は答えを更新しました。 – Win

関連する問題