C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: GridView表示が遅い(OnClientClick設定)


(過去ログ 99 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■59046 / inTopicNo.1)  GridView表示が遅い(OnClientClick設定)
  
□投稿者/ まっさ (43回)-(2011/05/10(Tue) 13:30:42)

分類:[ASP.NET (C#)] 

GridViewのRowDataBoundで、
以下の様にOnClientClickを設定して、リンクを押された時に、その行にある情報をGETで引き渡して
JAVSCRIPTからwindow.openをしています。

しかし・・・

GridViewに700件ほどデータを表示させたところ10秒近くかかります。

試しにOnClientClickに設定する内容をOpenWindow('test1','test2');と固定値にすると3秒ほどに改善されます。
LinkButtonの生成が遅いわけでもなくe.Row.Cells[3].Textの取得が遅いわけでも無いようです。

可変の値をOnClientClickに設定した時のみ、遅くなるのですが、これを回避する良い方法は無いでしょうか?
というかどういう原理で遅くなるのでしょうか?

LinkButton lk = (LinkButton)e.Row.Cells[0].Controls[1];
lk.OnClientClick = "OpenWindow('" + e.Row.Cells[3].Text.TrimEnd() + "','" + e.Row.Cells[1].Text.TrimEnd() + "');";

<script type="text/javascript">

function OpenWindow(selectedKey, selectedDate) {
var urlStr = 'SelectedFuryo.aspx?selectedKey=' + selectedKey + '&selectedDate=' + selectedDate;
window.open(urlStr, "_blank", "resizable=yes,menubar=no,status=no,location=no,toolbar=no,scrollbars=yes,height=700");

}
</script>
引用返信 編集キー/
■59050 / inTopicNo.2)  Re[1]: GridView表示が遅い(OnClientClick設定)
□投稿者/ todo (141回)-(2011/05/10(Tue) 16:30:19)
回避策

LinkButton lk = (LinkButton)e.Row.Cells[0].Controls[1];
lk.OnClientClick = "OpenWindow(this);";

<script type="text/javascript">

function OpenWindow(btn) {
var selectedKey = btn.parentNode.parentNode.childNodes[3].innerText;
var selectedDate = btn.parentNode.parentNode.childNodes[1].innerText;
var urlStr = 'SelectedFuryo.aspx?selectedKey=' + selectedKey + '&selectedDate=' + selectedDate;
window.open(urlStr, "_blank", "resizable=yes,menubar=no,status=no,location=no,toolbar=no,scrollbars=yes,height=700");
}
</script>
引用返信 編集キー/
■59092 / inTopicNo.3)  Re[2]: GridView表示が遅い(OnClientClick設定)
□投稿者/ まっさ (44回)-(2011/05/12(Thu) 14:36:14)
No59050 (todo さん) に返信
> 回避策
>
> LinkButton lk = (LinkButton)e.Row.Cells[0].Controls[1];
> lk.OnClientClick = "OpenWindow(this);";
>
> <script type="text/javascript">
>
> function OpenWindow(btn) {
> var selectedKey = btn.parentNode.parentNode.childNodes[3].innerText;
> var selectedDate = btn.parentNode.parentNode.childNodes[1].innerText;
> var urlStr = 'SelectedFuryo.aspx?selectedKey=' + selectedKey + '&selectedDate=' + selectedDate;
> window.open(urlStr, "_blank", "resizable=yes,menubar=no,status=no,location=no,toolbar=no,scrollbars=yes,height=700");
> }
> </script>

なるほど、勉強になります。
todoさん、ありがとうございます。
完璧に動きました!


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -