0

ボタンを表示/非表示にする次のJSコードがあります(この方法で行う必要があり、別の方法で行うとは言わないでください)。

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandle);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandle);
function beginRequestHandle(sender, Args) {
                document.getElementById("ltInstructions").style.visibility = "hidden";
                document.getElementById("btnSubmit").style.visibility = "hidden";
                document.getElementById("btnToExcel").style.visibility = "hidden";
            }
function endRequestHandle(sender, Args) {
                    if(<%=resultsCount %> > 0)
                    {
                        document.getElementById("ltInstructions").style.visibility = "visible";
                        document.getElementById("btnSubmit").style.visibility = "visible";
                        document.getElementById("btnToExcel").style.visibility = "visible";
                    }
                    else
                    {
                        document.getElementById("results").innerHTML = "<br><b><center><font size=20>No results found, please try again.</b></font></center>";
                    }
                }

問題は<%=resultsCount %>、コード ビハインドで 0 に初期化され、後で Timer_Tick メソッドで更新されることです。上記の Js は常に 0 として取得します。

JSが正しい値としてそれを取得する方法は?

4

2 に答える 2

1

代わりに asp:hiddenfield を使用し、Timer_Tick でその値を変更すると、更新された値が取得されます。

HTMLで

 <asp:HiddenField id="resultsCount" runat="server" Value="String" />

JavaScriptで

resultsCount = document.getElementById('<%= resultsCount.ClientID %>').value;
于 2012-07-09T08:54:57.473 に答える
0

ブラウザで Web ページのソースを確認してみてください。は一度だけ<%=resultsCount %>評価されるため、タイマーは JavaScript で記述する必要があります。

 if (0 > 0) {
   ...
 }

setIntervalメソッドとメソッドを使用して、JavaScript でタイマーを実装できclearIntervalます。update()何かを更新する必要があるときはいつでも呼び出される関数を定義してから実行する

var updateInterval

function update() {
  if(condition) {
    /* update stuff */
  } else {
    /* no more updates needed */
    clearInterval(updateInterval) /* stop updating */
  }
}

updateInterval = setInterval(update, 1000) /* call update() every 1000 ms, that is every second */
于 2012-07-09T08:51:37.327 に答える