2013-10-31 165 views
0

我在RadGrid中顯示數據時出現問題。數據源中有數據,但RadGrid不顯示它。Telerik RadGrid不顯示記錄

ASPX代碼:

<telerik:RadGrid ID="RadGrid1" runat="server" Width="980px" 
EnableEmbeddedSkins="false" 
AllowAutomaticDeletes="false" 
AllowAutomaticInserts="false" 
AllowAutomaticUpdates="true" 
AllowPaging="true" 
AutoGenerateColumns="False"    
AutoGenerateDeleteColumn="false" 
AutoGenerateEditColumn="false" 
ItemStyle-Height="20px" 
ClientSettings-ActiveRowIndex="true" 
EnableViewState = "false" 
OnNeedDataSource = "RadGrid1_NeedDataSource"> 
<MasterTableView AllowSorting="true" PageSize="10" Width="980px" EnableViewState="true" 
    RetrieveAllDataFields="false"> 
    <NoRecordsTemplate>There is no data available.</NoRecordsTemplate> 

    <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn> 
    <Columns>      
     <telerik:GridBoundColumn DataField="TripId" HeaderText="Trip ID" SortExpression="TripID" UniqueName="TripId" 
      SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif"> 
     </telerik:GridBoundColumn> 
     <telerik:GridBoundColumn DataField="TripLegId" HeaderText="TripLegId" SortExpression="TripLegId" UniqueName="TripLegId" 
      SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif"> 
     </telerik:GridBoundColumn> 
     <telerik:GridBoundColumn DataField="MemberFirstName" HeaderText="Member First Name" SortExpression="MemberFirstName" 
      UniqueName="MemberFirstName" 
      SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif"> 
     </telerik:GridBoundColumn> 
    </Columns> 

    <PagerStyle FirstPageImageUrl="PagingFirst.gif" 
     LastPageImageUrl="PagingLast.gif" NextPageImageUrl="PagingNext.gif" 
     PrevPageImageUrl="PagingPrev.gif" /> 
    <CommandItemStyle Font-Bold="True" ForeColor="#0066CC" /> 
</MasterTableView> 
<ClientSettings> 
    <Selecting AllowRowSelect="true" /> 
</ClientSettings> 
<FilterMenu EnableImageSprites="False"></FilterMenu>    
</telerik:RadGrid> 

的.cs代碼

public void btnSearch_Clicked(object sender, EventArgs e) 
{ 
    try 
    { 
     RadGrid1.DataSource = GetTripsDataSet(); 
     RadGrid1.DataBind(); 
     this.RadGrid1.CurrentPageIndex = 0; 
     ViewState["newset"] = "new"; 
    } 
    catch (Exception ex) 
    { 
     string errMessage = ex.Source.ToString(); 
    } 
} 

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    if (ViewState["newset"] == null) return; 

    if (Session["gridTrips"] != null) 
    { 
     DataTable dt = (DataTable)Session["griTrips"]; 
     if (dt.Rows.Count > 0) 
     { 
      this.RadGrid1.DataSource = dt; 
     } 
    } 
} 
+0

您是否需要設置Session [「gridTrips」]?嘗試調用RadGrid1.Rebind() – PJM

+0

也刪除RadGrid1.DataSource = GetTripsDataSet(); RadGrid1.DataBind(); – PJM

回答

1

你只需要重新綁定網格,它會自動調用網格的NeedDataSource事件。

public void btnSearch_Clicked(object sender, EventArgs e) 
{ 
    try 
    { 
     this.RadGrid1.Rebind(); 
     this.RadGrid1.CurrentPageIndex = 0; 
     ViewState["newset"] = "new"; 
    } 
    catch (Exception ex) 
    { 
     string errMessage = ex.Source.ToString(); 
    } 
} 

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    if (ViewState["newset"] == null) return; 

    if (Session["gridTrips"] != null) 
    { 
     DataTable dt = (DataTable)Session["griTrips"]; 
     if (dt.Rows.Count > 0) 
     { 
      this.RadGrid1.DataSource = dt; 
      this.RadGrid1.VirtualItemCount = dt.Rows.Count; 
     } 
    } 
} 

這也是很好的設置網格的VirtualItemCount財產,特別是如果你使用自定義分頁。從這個屬性的Telerik的radgrid控件的元數據:

總結: 獲取或設置一個值,表示當使用自定義分頁在數據源 項的總數。因此,網格「理解」數據源 包含指定數量的記錄,並且它應該一次僅提取它們的部分 以執行請求的操作。

備註: 如果設置的值比項目的實際數量更大,radgrid控件 會顯示超過實際數量的項目所有可用的物品加空頁(或者你設置任何其他內容 )。 例如,您有一個包含9'000項的數據源,並將VirtualItemCount 設置爲10'000。如果您的頁面大小爲1000,則網格將呈現10頁,並且 最後一頁將爲空(或者如果您正在使用此頁面,則使用NoRecordsTemplate)。