Telerik RadGrid不显示记录

时间:2013-10-31 18:04:40

标签: c# asp.net telerik telerik-grid radgrid

我在RadGrid中显示数据时遇到问题。数据源中有数据,但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;
        }
    }
}

1 个答案:

答案 0 :(得分: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元数据:

  

要点:       获取或设置一个值,指示数据源中的项目总数       何时使用自定义分页。因此,网格&#34;理解&#34;那个数据源       包含指定数量的记录,它应该只获取部分       他们一次执行请求的操作。

     

说明:       如果设置的值大于实际的项目数,则为RadGrid       将显示所有可用项目和空白页面(或任何其他内容       你设置)超过实际数量的项目。       例如,您有一个包含9&#39,000个项目的数据源,并设置了VirtualItemCount       到10&000; 000。如果您的页面大小为1000,网格将呈现10页和       最后一页将为空(如果您正在使用NoRecordsTemplate,则为空)。