2017-02-14 6 views
0

У меня есть страницы ASPX с 40 ++ отброшенного Списка вниз в таблице генерируемой из серверных C# код, как показано ниже: Drop Down ListsASP. NET C# веб-приложения проблема производительности

Это выпадающий список может быть найдены с помощью 3 партия JQuery ниже:

<script src="../Scripts/jquery-1.8.3.min.js" type="text/javascript" ></script> 
<script src="../Scripts/jquery.searchabledropdown-1.0.8.min.js" type="text/javascript"></script> 

Все работает отлично, за исключением, когда страница загружается его очень медленно, который занимает около 20 до 30 секунд.

Любые советы ребята? Есть ли другой способ или другие рекомендации по дикому поиску?

Благодаря ...

Это резюме заднего конца кода:

//This chunk build the drop down list in the table 
for (int y = 1; y <= DETAIL_ROW; y++) 
{ 
    DropDownList InternalOrderDDL = new DropDownList(); 
    InternalOrderDDL.ID = "InternalOrderDDL" + y.ToString(); 
    InternalOrderDDL.Width = Unit.Percentage(100); 
    InternalOrderDDL.Attributes.Add("onfocus", "ChangeDropDownWidth(this);"); 
    InternalOrderDDL.Attributes.Add("onblur", "ResetDropDownWidth(this);"); 

    HtmlTableCell InternalOrderCell = new HtmlTableCell(); 
    InternalOrderCell.Controls.Add(InternalOrderDDL); 

    NewRow.Cells.Add(InternalOrderCell); 
    DetailTable.Rows.Add(NewRow); 
} 

//This chunk of code populate the Drop Down List 
DataTable InternalOrderDT = new DataTable(); 

using (SqlConnection Conn = new SqlConnection(CONNECTION_STRING)) 
{ 
    SqlCommand Cmd = new SqlCommand("spActiveInternalOrderRetrieveListByCompany", Conn); 
    Cmd.CommandTimeout = 0; 
    Cmd.CommandType = CommandType.StoredProcedure; 
    Cmd.Parameters.Add("CompanyID", SqlDbType.NVarChar).Value = companyID; 
    Conn.Open(); 
    SqlDataReader Dr = Cmd.ExecuteReader(); 
    InternalOrderDT.Load(Dr); 
    Conn.Close(); 
} 

for (int y = 1; y <= DETAIL_ROW; y++) 
{ 
    DropDownList InternalOrderDDL = DetailTable.FindControl("InternalOrderDDL" + y.ToString()) as DropDownList; 
    InternalOrderDDL.DataTextField = "InternalOrderName"; 
    InternalOrderDDL.DataValueField = "InternalOrderID"; 
    InternalOrderDDL.DataSource = InternalOrderDT; 
    InternalOrderDDL.DataBind(); 
    InternalOrderDDL.Items.Insert(0, new ListItem("--", "")); 

} 
+0

Можете ли вы поднять задний конец кода. –

+0

Также старайтесь профайла вашей базы данных на звонки – BennyM

+0

@NayanKatkani Я редактировал сообщение. – LeonCat

ответ

0

Мой наконечник для кэширования данных. Проверьте, какой из 40 выпадающих списков можно кэшировать, из данных, которые вам не нужны для получения данных из базы данных, но с использованием кеша. Это сэкономит вам несколько секунд и уменьшит время, затрачиваемое на рендеринг. Также проверьте возможность использования OutputCache.

Еще одна вещь, которая может стоить проверить производительность базы данных. Проверьте, есть ли какие-то старые данные, которые можно архивировать. Также проверьте, нет ли отсутствующего индекса, и если запросы возвращают только нужные вам данные, а не все поля из таблицы.

Смежные вопросы