在下面的代码中,我有一个注释掉的标准asp Datagrid视图和Telerik RadGrid。
<telerik:RadGrid ID="RadGrid1" runat="server">
</telerik:RadGrid>
在c#端,这是我在page_load中的代码
DataTable dt = new DataTable();
string id = Request.QueryString["id"];
SqlConnection conn = new SqlConnection( ConfigurationManager.ConnectionStrings["SHBNdbConnectionString"].ConnectionString);
conn.Open();
string query = "SELECT ProjectDesc,ProjectLoc,ProjectStatus FROM tblProjects INNER JOIN tblClients ON tblClients.ProjectID=tblProjects.ProjectID WHERE tblClients.ClientID='"+ id +"';";
SqlCommand com = new SqlCommand(query, conn);
using (SqlDataAdapter sda = new SqlDataAdapter())
{
sda.SelectCommand = com;
sda.Fill(dt);
RadGrid1.DataSource = dt;
RadGrid1.DataBind();
}
conn.Close();
现在,注释掉的部分c#代码工作正常,如果我运行网站并打开它,它将在标准Datagridview中显示数据,但是,当我为Telerik RadGrid(包含程序集引用)做同样的事情时在html和带有dll的Bin文件夹中)我收到以下错误:
分析器错误
描述:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并相应地修改源文件。
分析器错误消息:抛出类型System.OutOfMemoryException
的异常。
为什么在使用Telerik控件时才会发生这种情况?
答案 0 :(得分:0)
Telerik RadGrid将其数据存储在页面的ViewState中,如果它变得非常大,它可以抛出你正在看到的System.OutOfMemoryException
。
尝试通过设置EnableViewState="false"
来禁用RadGrid设置中的ViewState存储:
<telerik:RadGrid ID="RadGrid1" runat="server" EnableViewState="false" />
有关优化Telerik控件的ViewState的详细信息,请查看this page。