簡體   English   中英

Ext.net-MessageBox確認僅在整個for循環中顯示一次

[英]Ext.net - MessageBox confirm only shows ONCE in entire for loop

我正在使用Ext.net MessageBox確認從用戶處獲取確認,每當他們想要更新記錄時,就在消息框中單擊“是”。 但是消息框僅顯示一次for循環完成的時間。 這是代碼:

    foreach (DataRow row in dataTable.Rows)
    {
        foreach (DataColumn col in dataTable.Columns)
        {
            var item = row[col];

            // some code....

            RM.RegisterClientScriptBlock("confirm", "showResult();");

            if (hdfIsAgree.Text == "1")
            {
                hr_TimeSheetCodeServices.Update(item);
            }
        }
    }

這里是客戶端代碼:

<script>
    var showResult = function () {
            Ext.Msg.confirm('Update', 'Do you want to update?', function (btn) {
                if (btn == "yes") {
                    hdfIsAgree.setValue('1');
                } else {
                    hdfIsAgree.setValue('0');
                }
            });
        }
</script>
<ext:Hidden runat="server" ID="hdfIsAgree" />

RegisterClientScriptBlock方法中的第一個參數是key ,這意味着,如果第二次使用相同的鍵調用此方法,則第一個腳本將被更新; 您將不會創建兩個記錄。 像這樣:

for (int i = 0; i < 3; i++)
   RM.RegisterClientScriptBlock("confirm", "showResult();");

int count = RM.ClientScriptBlockBag.Count; // 1

將只給您一個注冊腳本。 將密鑰更改為唯一的密鑰,以注冊多個腳本:

for (int i = 0; i < 3; i++)
    RM.RegisterClientScriptBlock($"confirm-{i}", "showResult();");

int count = RM.ClientScriptBlockBag.Count; // 3

使用RM.RegisterClientScriptBlock("confirm", "showResult();"); 在for循環中,當前請求(最新請求)將覆蓋先前的請求。

因此,這僅適用於for循環的最后一個值,並且由於所有先前的請求均被覆蓋,因此它僅顯示一次窗口。

嘗試在客戶端運行循環,將確認值保存在任何參數中,然后在服務器端同時發送具有特定ID的所有值(該參數)以識別每個值,然后應用您的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM