Как сделать несколько последующих постбэков? Не хочу ждать ответа. Использование веб-форм и сетки данных в .net c # 4.0 - PullRequest
0 голосов
/ 09 сентября 2018

Вот проблема и пути решения:

enter image description here

<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 не является проблемой - он должен вызывать процесс на другом сервере, который занимает много времени, а мы не управляем другим сервером.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...