首页 文章

Telerik RadGrid不显示记录

提问于
浏览
0

我在RadGrid中显示数据时遇到问题 . 数据源中有数据,但RadGrid不显示它 .

aspx code:

<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 code

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 回答

  • 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;
            }
        }
    }
    

    它's also good to set the grid' s VirtualItemCount 属性,特别是如果您正在使用自定义分页 . 来自此属性的Telerik RadGrid元数据:

    摘要:获取或设置一个值,指示使用自定义分页时数据源中的项目总数 . 因此,网格“理解”数据源包含指定数量的记录,并且它应该一次仅获取其中的一部分以执行所请求的操作 . 备注:如果您设置的值大于实际的项目数,RadGrid将显示超出实际数量的项目的所有可用项目和空白页面(或您设置的任何其他内容) . 例如,您有一个包含9'000项的数据源,并将VirtualItemCount设置为10'000 . 如果页面大小为1000,则网格将呈现10页,最后一页将为空(如果您使用此页面,则使用NoRecordsTemplate) .

相关问题