コントロールにアタッチされていないコードをトリガーする手動ポストバックを実現しようとしています。ポストバック中に特定のコントロールを参照する必要があり、結果をページのグリッドビューに更新する必要があるため、AJAX PageMethods を使用したくありません。
私はすでに他の 2 つの方法で動作していますが、何らかの理由で 3 つ目の方法は一度もデプロイされていませんが、私の開発マシンでは問題なく動作しています。
コードビハインド (Page_load)
switch (Request["__EVENTARGUMENT"]) {
case "ItemReserved":
GetAllStock();
break;
case "PendingItemRemoved":
PopulatePending();
break;
case "StockInSubmitted":
SubmitNewStock(); // this doesn't fire
break;
}
コードが「SubmitNewStock()」に達したらすぐにログ ファイルに書き込む行を挿入しました。ログは開発マシンに書き込まれましたが、Web サーバーには書き込まれませんでした。他の両方のポストバックは期待どおりに機能します。
ページスクリプト
function ctxMenu_Reserve() {
PageMethods.SetItemReserved(CGRefForMenu);
__doPostBack('', 'ItemReserved');
HideMouseMenu();
}
function ctxMenuPending_Remove() {
PageMethods.RemovePendingItem(CGRefForPendingMenu);
__doPostBack('', 'PendingItemRemoved');
}
function StockINSubmit(){
SubmitPlaceHolder = document.getElementById('<%=PlaceholderStockInSubmit.ClientID %>');
SubmitPlaceHolder.innerHTML = "Processing...";
__doPostBack('', 'StockInSubmitted'); //Causes postback, but relevant code is not triggered once on my live server
}
サイトをライブWebサーバーにデプロイすると、これが機能しない理由を知っている人はいますか?
StockINSubmit() は、モーダル ポップアップ ボックス内に配置された、動的に作成されたクライアント リンク ボタンから開始されることに注意してください。
PlaceholderStockInSubmit.Controls.Add(
new LinkButton() {
OnClientClick = "StockINSubmit()",
Text = "Submit",
ID = "lnkStockInSubmit"
});
StockINSubmit() は、そのボタンを含む DIV の HTML コンテンツを置き換えます。(「送信」をクリックすると、「処理中」ラベルに変わります)。それが問題を引き起こす理由はわかりませんが、言及する価値があると思いました.