我已成功创建了一个母版页来上传和编辑数据,并已在我的客户页面主页上成功检索到该数据。现在这是我的问题,在我的主页上我有5个中继器从5个表中检索文本和图像的数据:
以下是我检索数据的代码:
private DataTable GetData(string query)
{
string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlCommand cmd = new SqlCommand(query);
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
private void rpt_slider()
{
try
{
DataTable dt1 = this.GetData("select top(5)* from H_slide");
rpt_sli.DataSource = dt1;
rpt_sli.DataBind();
}
catch (Exception)
{
}
}
在页面加载时:
protected void Page_Load(object sender, EventArgs e)
{
// homepage slider
rpt_slider();
// news
rpt_news();
// featured post
rpt_feat();
// principal notes
rpt_notes();
// about college
rpt_about();
}
检索所有数据需要花费大量时间,尤其是在互联网速度较慢的情况下。那么可以逐个检索数据吗?首先是主页滑块,几秒后新闻数据和之后关于大学等等,以便所有数据不会立即加载,而是以几秒的间隔加载。我花了几天研究,但没有找到任何解决方案,我不知道是否可以这样做,但如果有任何解决方案,任何人都可以帮助我。
谢谢。
答案 0 :(得分:1)
我担心这比你想象的要多一些。如果您需要同一页面上的所有内容,则必须使用AJAX获取它们:获取第一个集合,一旦响应返回,然后发送后续请求。 Here是您可以关注的文章。但就像我说的那样,它比你想象的要多得多。
另外,尝试使用分页。例如,如果您的一个表有100万行,则不要全部获得100万行。得到50可以控制,以便用户可以按下,然后获得下一个50,依此类推。 Here是一个教程,您可以按照分页,排序等方式进行操作。
答案 1 :(得分:0)
相反,我认为这很简单。 如果5种类型的数据彼此独立,则使用任务并行库(这需要.NET 4.5)。 从db异步获取所有这些数据并将它们绑定到转发器。 这应该会为您带来巨大的性能提升。
另请遵循@codingyoshi建议的分页建议。
如果这种性能提升还不够,请回来,我会建议其他一些改变。
Parallel.Invoke{()=>(
{
// homepage slider
rpt_slider();
},
{
// news
rpt_news();
},
{
// featured post
rpt_feat();
},
{
// principal notes
rpt_notes();
},
{
// about college
rpt_about();
}
)};