[英]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.