Вот проблема и пути решения:
<asp:TemplateColumn HeaderText="QLIK EDITS">
<ItemTemplate>
<asp:LinkButton runat="server" Text="Refresh Data"
CommandArgument='<%# DataBinder.Eval(Container, "DataItem.app_id") %>'
OnCommand="lnkRefreshData_Command" CausesValidation="false"
ID="lnkRefreshData">
</asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
<EditItemTemplate>
<asp:LinkButton runat="server" Text="Replace from Master" ID="lnkReplaceFromMaster"
CommandArgument="app_id" OnClick="lnkReplaceFromMaster_Click" >
</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
и позади ...
protected void lnkRefreshData_Command(object sender, CommandEventArgs e){
...
cmd.ExecuteNonQuery();
}
У меня есть сетка данных с ItemTemplate, EditTemplate и FooterTemplate. Когда я нажимаю «Обновить данные», у него обычно много времени, прежде чем ответ возвращается (связано с медленным сервером, а не с кодом). Проблема в том, что когда он ожидает ответа, он не дает странице немного ответить ..
- Нажатие на правку не переключает редактирование этой строки;
- Опция перезагрузить кадр не работает;
- появится окно подтверждения удаления, но когда вы нажмете «Отмена», оно все равно ответит «да», как только ответ вернется.
Как только ответ возвращается, все возвращается в нормальное состояние.
Я безуспешно пробовал следующее:
1. чтобы команда refresh_click () {} использовала async и ожидала task.factory.startnew (). (синтаксис правильный, работал нормально, не устранил вышеуказанную проблему).
2. Я использовал команду threadpool.queueuserworkitem (). это было нехорошо и дал случайные эффекты после компиляции.
3. Я попытался поместить сетку данных в панель обновления с сеткой данных в качестве асинхронизатора. Скомпилированные, странные эффекты, не решили проблему.
4. Внутри команды refresh_click я пробовал различные формы Response.Redirect и Response.End. Неудачно
5. Я пробовал такие вещи, как передача делегату, запрос на выполнение команды sqlCommand и т. Д.
Мне нужно, чтобы команды работали все время, даже если страница ожидает ответа.
(Ответ сервера sql не является проблемой - он должен вызывать процесс на другом сервере, который занимает много времени, а мы не управляем другим сервером.)