我在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;
}
}
}
答案 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,则为空)。