0

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

1 に答える 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;
        }
    }
}

VirtualItemCount特にカスタム ページングを使用している場合は、グリッドのプロパティを設定することもお勧めします。このプロパティの Telerik RadGrid メタデータから:

概要: カスタム ページングが使用されている場合に、データ ソース内のアイテムの総数を示す値を取得または設定します。したがって、グリッドは、データ ソースに指定された数のレコードが含まれていることを「認識」し、要求された操作を実行するには、一度にそれらの一部のみをフェッチする必要があります。

備考: アイテムの実際の数よりも大きい値を設定すると、RadGrid は、実際の数を超えるアイテムについて、使用可能なすべてのアイテムと空のページ (または設定したその他のコンテンツ) を表示します。たとえば、9'000 アイテムのデータ ソースがあり、VirtualItemCount を 10'000 に設定したとします。ページ サイズが 1000 の場合、グリッドは 10 ページをレンダリングし、最後のページは空になります (または NoRecordsTemplate を使用している場合)。

于 2014-07-23T18:51:21.873 に答える