Я бы хотел сказать, что это запрос, но это не так. Даже когда мы пошагово проходим, запросы завершаются без проблем. Даже метод .DataBind () не появляется, чтобы вызвать задержку.
Вот как я знаю, что это связано с моим IQueryable в качестве источника привязки:
Старый код:
- Вызвать хранимую процедуру с помощью SqlCommand и использовать SqlAdapter для заполнения новой таблицы данных.
- DataTable будет отправлен в метод для каждого DropDownList. (Есть 5 DDL)
- Каждый метод будет передавать строки таблицы данных (да, каждая из них) в IEnumerable.
- Несколько запросов LINQ будут выполняться к IEnumerable, чтобы отфильтровать нужные нам параметры, включая .Distinct (IEqualityComparer) и .Sort (x => x ["RowName"]); (Опять же, каждый из методов будет выполнять это).
- Новый объект DataTable будет создан с помощью IEnumerable.CopyToDataTable () (да, опять же, каждый метод)
- DropDownList.DataSource будет установлен в новый DataTable, а затем будет .DataBind ().
Эта ужасная пародия на код очень быстро закончится в IE. Возможно, секунду или две времени на обдумывание.
Вот новый код во плоти:
IQueryable<Expose_LotRuns> elr = DB.Expose_LotRuns;
if (iTechID > 0)
elr = elr.Where(x => x.Master_LotRuns.Flows.CD_Techs.ID == iTechID);
if (iFlowID > 0)
elr = elr.Where(x => x.Master_LotRuns.Flows.ID == iFlowID);
if (iToolID > 0)
elr = elr.Where(x => x.Master_LotRuns.Tools.ID == iToolID);
if (iOperationID > 0)
elr = elr.Where(x => x.Master_LotRuns.Operations.ID == iOperationID);
if (iReticleID > 0)
elr = elr.Where(x => x.Reticles.ID == iReticleID);
var techs = from x in elr
where (x.Master_LotRuns.Flows.CD_Techs != null)
group x by new
{
x.Master_LotRuns.Flows.CD_Techs.ID,
x.Master_LotRuns.Flows.CD_Techs.Technology
} into y
orderby y.Key.Technology
select new { y.Key.ID, y.Key.Technology };
var flows = from x in elr
//where (x.Master_LotRuns.Flows != null)
group x by new
{
x.Master_LotRuns.Flows.ID,
x.Master_LotRuns.Flows.Flow
} into y
orderby y.Key.Flow
select new { y.Key.ID, y.Key.Flow };
var tools = from x in elr
//where (x.Master_LotRuns.Tools != null)
group x by new
{
x.Master_LotRuns.Tools.ID,
x.Master_LotRuns.Tools.Tool
} into y
orderby y.Key.Tool
select new { y.Key.ID, y.Key.Tool };
var ops = from x in elr
//where (x.Master_LotRuns.Operations != null)
group x by new
{
x.Master_LotRuns.Operations.ID,
x.Master_LotRuns.Operations.Operation
} into y
orderby y.Key.Operation
select new { y.Key.ID, y.Key.Operation };
var rets = from x in elr
//where (x.Reticles != null)
group x by new { x.Reticles.ID, x.Reticles.Reticle } into y
orderby y.Key.Reticle
select new { y.Key.ID, y.Key.Reticle };
ddlTechs.DataTextField = "Technology";
ddlTechs.DataValueField = "ID";
ddlTechs.DataSource = techs;
ddlTechs.DataBind();
ddlTechs.Items.Insert(0, new ListItem("Any", "0"));
ddlFlows.DataTextField = "Flow";
ddlFlows.DataValueField = "ID";
ddlFlows.DataSource = flows;
ddlFlows.DataBind();
ddlFlows.Items.Insert(0, new ListItem("Any", "0"));
ddlTools.DataTextField = "Tool";
ddlTools.DataValueField = "ID";
ddlTools.DataSource = tools;
ddlTools.DataBind();
ddlTools.Items.Insert(0, new ListItem("Any", "0"));
ddlOpers.DataTextField = "Operation";
ddlOpers.DataValueField = "ID";
ddlOpers.DataSource = ops;
ddlOpers.DataBind();
ddlOpers.Items.Insert(0, new ListItem("Any", "0"));
ddlReticles.DataTextField = "Reticle";
ddlReticles.DataValueField = "ID";
ddlReticles.DataSource = rets;
ddlReticles.DataBind();
ddlReticles.Items.Insert(0, new ListItem("Any", "0"));
Теперь, если вы посмотрите следующее видео, вы увидите, что приведенный выше код очень хорошо работает как в Firefox, так и в Chrome, и все же он работает в MS IE. Обычно я был бы счастлив, потому что я не использую IE, но IE - это политика компании. Также стоит упомянуть, что задержка происходит только для первого DDL, но не для любого из последующих выборов. Кроме того, начальная загрузка (которая загружает все данные, не ограничиваясь, используя одни и те же методы) также не занимает много времени для загрузки.
http://www.youtube.com/watch?v=-3QyNj87BSQ
Некоторые пожалуйста, ПОЖАЛУЙСТА, скажите мне, почему IE ведет себя так, и что я могу сделать, чтобы это исправить. Кстати, это так же плохо работает в IE7 и IE8