Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从代码隐藏传递到javascript的变量未更新_Javascript_Asp.net - Fatal编程技术网

从代码隐藏传递到javascript的变量未更新

从代码隐藏传递到javascript的变量未更新,javascript,asp.net,Javascript,Asp.net,我需要将新选择的gridview行索引传递给我的aspx页面中的javascript。但是代码只获取变量的初始值,当脚本再次运行时,它包含未更新的值 我的代码隐藏中的变量是“SelectedRowIndex”,它是一个整数 window.addEventListener(“按键按下”),函数(事件){ 控制台日志(“”); var validArrowKey=false; var指数=“”; 如果(event.keyCode==40){ validArrowKey=true; 索引++; }

我需要将新选择的gridview行索引传递给我的aspx页面中的javascript。但是代码只获取变量的初始值,当脚本再次运行时,它包含未更新的值

我的代码隐藏中的变量是“SelectedRowIndex”,它是一个整数

window.addEventListener(“按键按下”),函数(事件){
控制台日志(“”);
var validArrowKey=false;
var指数=“”;
如果(event.keyCode==40){
validArrowKey=true;
索引++;
}
else if(event.keyCode==38&&index>-1){
validArrowKey=true;
索引--;
}
如果(validArrowKey){
var trPaymentDetails=document.getElementById(“trPaymentDetails”+index.toString())
if(trPaymentDetails){
__doPostBack('ctl00$MainContent$grdPaymentDetails','Select$'+index.toString());
}
其他的
__doPostBack('ctl00$MainContent$grdPaymentDetails','Select$'+index.toString());
}

},假)通过将
索引
变量移到函数外,使其成为全局变量,则只会设置一次

var index = '<%= SelectedRowIndex %>';
window.addEventListener("keydown", function (event) {
        console.log('<%= SelectedRowIndex %>');
        var validArrowKey = false;

        if (event.keyCode == 40) {
            validArrowKey = true;
            index++;
        }
        else if (event.keyCode == 38 && index > -1) {
            validArrowKey = true;
            index--;
        }

        if (validArrowKey) {
            var trPaymentDetails = document.getElementById("trPaymentDetails_" + index.toString())

            if (trPaymentDetails) {
                __doPostBack('ctl00$MainContent$grdPaymentDetails', 'Select$' + index.toString());
            }
            else
                __doPostBack('ctl00$MainContent$grdPaymentDetails', 'Select$' + index.toString());

        }
    }, false);
var指数=”;
window.addEventListener(“按键向下”,函数(事件){
控制台日志(“”);
var validArrowKey=false;
如果(event.keyCode==40){
validArrowKey=true;
索引++;
}
else if(event.keyCode==38&&index>-1){
validArrowKey=true;
索引--;
}
如果(validArrowKey){
var trPaymentDetails=document.getElementById(“trPaymentDetails”+index.toString())
if(trPaymentDetails){
__doPostBack('ctl00$MainContent$grdPaymentDetails','Select$'+index.toString());
}
其他的
__doPostBack('ctl00$MainContent$grdPaymentDetails','Select$'+index.toString());
}
},假);

您刚刚分配了一个匿名函数,该函数将在每次触发keydown事件时执行。因此,每次都会执行内部的变量声明。这就是为什么它总是初始值。尝试将索引声明为全局变量。用户必须首先单击gridview中的一行以设置第一个索引。确定它可以工作,但为什么当我在gridview中获取新的总行时,即使其中有行,仍然返回0?我也将它放在函数“var totalRows=””之上;如果没有所有的代码,无论是服务器端还是客户端,都很难回答这个问题。您可以将“”替换为网格“数据源”的Count属性