datagrid très lent en édition (à cause de l'UpdatePanel)
Bonjour, :D
J'ai une page asp, dans laquelle j'ai un datagrid que je peux éditer par ligne.
En éditant une ligne, je peux remplir des champs textes libres, mais il y a un décalage important entre le moment où je tape sur mon clavier et le moment où mon caractère s'affiche, pouvant aller jusqu'à 5 secondes! Changer le focus d'un champs texte à un autre prend égalemment du temps.
Après plusieurs tests, j'ai constaté que cette lenteur venait de l'UpdatePanel, qui permet d'éviter le saut de page et donc que ce soit moins agaçant pour l'utilisateur.
Voilà donc je voudrais garder cet UpdatePanel tout en résolvant ce problème de lenteur: peut être que quelqu'un peut revoir mon code et y apporter son expérience?
Voilà donc mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| <asp:Panel ID="asrunPanel" runat="server" Width="90%" Visible="false">
<asp:ScriptManager ID="ScriptManagerDG" runat="server" AsyncPostBackTimeout="5" />
<script type="text/javascript">
var scrollTop;
var prm = Sys.WebForms.PageRequestManager.getInstance();
function BeginRequestHandler(sender, args) {
var panel = document.getElementById('<%= panelDG.ClientID %>');
if (panel != null) {
scrollTop = panel.scrollTop; alert(scrollTop);
}
}
function EndRequestHandler(sender, args) {
var panel = document.getElementById('<%= panelDG.ClientID %>');
if (panel != null) {
panel.scrollTop = scrollTop; alert(scrollTop);
}
}
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
</script>
<asp:UpdatePanel ID="UpdatePanelDG" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="SaveButton" />
</Triggers>
<ContentTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="text-align: center">
<tr>
<td class="searchTableHeader">
<!--du texte et un bouton d enregistrement du datagrid en base-->
</td>
</tr>
</table>
<br />
<asp:Panel ID="panelDG" runat="server" Height="500" ScrollBars="Vertical">
<p style="text-align: center">
<asp:DataGrid ID="LogsGrid" runat="server" AutoGenerateColumns="false" AllowSorting="False"
CssClass="datagrid" CellPadding="0" OnItemDataBound="LogsGrid_ItemDataBound"
OnItemCommand="LogsGrid_ItemCommand">
<!--les différentes columns-->
</asp:DataGrid>
</p>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel> |
Merci! :D