Я пытаюсь создать новую веб-страницу, где мне нужно отобразить почти 10 различных gridviews и диаграмм.
Gridviews привязаны к событию pageload, и диаграммы отображаются с использованием метода jquery-ajax (с использованием amcharts, а также с помощью высокоскоростных диаграмм), вызывая WebMethod.
Изначально я реализовал страницу таким образом, что после выполнения того же набора хранимых процедур для gridviews (для отображения данных в виде сетки) и webmethods (для рисования диаграмм). Такие же sps выполняются дважды для этой страницы (один для сетки и другой для диаграммы). Для сбора данных необходимо выполнить 10 sps.
Итак, для улучшения производительности страницы я создал статический datatable, как этот
static DataTable Report1;
и привязал gridview следующим образом.
private void gvbindReport1()
{
try
{
Report1 = new DataTable();//refreshed datatable
DataSet ReportDS1 = objmvbl.GetReportGraph(ClientID, date_From, date_To);
if (ReportDS1.Tables.Count > 0)
{
Report1 = ReportDS1.Tables[0];//bindinding data to static datatable
}
GdReport.DataSource = Report1;
GdReport.DataBind();
}
catch (Exception ex)
{
Log.Errlog("Error Occured in gvbindReport1 : " + ex.Message.ToString());
}
}
и внутри web-метода я использовал тот же тип данных, что и для рисования диаграммы как это
[System.Web.Services.WebMethod]
public static string GetDataReport1()
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
try
{
//processing for the data inside static datatable
if (Report1.Rows.Count > 0)
{
foreach (DataRow dr in Report1.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in Report1.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
}
}
catch (Exception ex)
{
Log.Errlog("Error Occured in GetDataReport WebMethod of Report Page : " + ex.Message.ToString());
}
return serializer.Serialize(rows);
}
с этим я могу показать как сетку, так и диаграммы.
Теперь, пожалуйста, скажите мне, что это правильный подход к работе с веб-методами? Я прочитал, что веб-метод не имеет никакого отношения к странице и всем. Пожалуйста, скажите мне, какие недостатки этого метода.
Если это неверно, пожалуйста, предложите лучший способ улучшить производительность страницы.