C# Ext.net-MessageBox confirm在整个for循环中仅显示一次

C# Ext.net-MessageBox confirm在整个for循环中仅显示一次,c#,asp.net,ext.net,C#,Asp.net,Ext.net,我正在使用Ext.net MessageBox confirm获得用户的确认, 每当他们想要更新记录时,他们都会在消息框中单击“是”。但是当for循环完成时,消息框只显示一次。代码如下: foreach (DataRow row in dataTable.Rows) { foreach (DataColumn col in dataTable.Columns) { var item = row[col];

我正在使用Ext.net MessageBox confirm获得用户的确认, 每当他们想要更新记录时,他们都会在消息框中单击“是”。但是当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" />

var showResult=函数(){
Ext.Msg.confirm('Update','youwantoupdate?',函数(btn){
如果(btn=“是”){
hdfisage.setValue('1');
}否则{
hdfisage.setValue('0');
}
});
}

RegisterClientScriptBlock方法中的第一个参数是
,这意味着,如果您使用相同的键第二次调用此方法,您的第一个脚本将被更新;您不会创建两个记录。大概是这样的:

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(“确认”、“显示结果();”);
int count=RM.ClientScriptBlockBag.count;//1.
将只提供一个已注册的脚本。将密钥更改为唯一,以注册多个脚本:

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

int count = RM.ClientScriptBlockBag.Count; // 3
for(int i=0;i<3;i++)
RegisterClientScriptBlock($“确认-{i}”,“显示结果();”);
int count=RM.ClientScriptBlockBag.count;//3.

使用RM.RegisterClientScriptBlock(“确认”、“显示结果();”)将用当前(最新)请求覆盖上一个请求

因此,这只适用于for循环的最后一个值,因此它只显示一次窗口,因为之前的所有请求都被覆盖了


尝试在客户端运行循环,将确认值保存在任何参数中,然后在服务器端同时发送具有特定id的所有值(参数),以识别每个值,然后应用您的逻辑。

正如您所说,它工作正常,但在for循环结束时,消息框仍显示一次。这并没有解决我的问题,我不知道你到底想在这里实现什么。您正在从代码隐藏中注册javascript,一旦加载页面,就会立即执行此javascript。对于所有行和单元格中的所有确认,您有一个字段
hdfIsAgree
?它是如何工作的?每次用户在GridPanel中编辑单元格时是否需要确认?您的循环在页面加载时执行?在直接活动期间?我相信你需要为你的问题提供更好的例子。我们可以复制、运行和检查正在发生的事情的绝对最小值。