Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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文件中查找用户控件的客户端Id_Javascript_Jquery_Asp.net_User Controls_Infragistics - Fatal编程技术网

在外部JavaScript文件中查找用户控件的客户端Id

在外部JavaScript文件中查找用户控件的客户端Id,javascript,jquery,asp.net,user-controls,infragistics,Javascript,Jquery,Asp.net,User Controls,Infragistics,在我的asp.net应用程序中,在父页面(.aspx)下呈现多个用户控件(.ascx)。在每个用户控件中,我调用javascript函数和一些其他Infrastics客户端事件(只能接受某些参数)。这些函数写在外部javascript文件中,并包含在父页面中 问题是,当我在每个函数中使用$find(“”)来查找调用来自的用户控件时,它返回为null。我无法更改传递到某些JS方法中的参数,因为它们与只接受特定参数的Infragistics事件相关 有没有一种方法可以在不向JS方法引入输入参数的情况

在我的asp.net应用程序中,在父页面(.aspx)下呈现多个用户控件(.ascx)。在每个用户控件中,我调用javascript函数和一些其他Infrastics客户端事件(只能接受某些参数)。这些函数写在外部javascript文件中,并包含在父页面中

问题是,当我在每个函数中使用$find(“”)来查找调用来自的用户控件时,它返回为null。我无法更改传递到某些JS方法中的参数,因为它们与只接受特定参数的Infragistics事件相关

有没有一种方法可以在不向JS方法引入输入参数的情况下从调用JavaScript方法的位置找到用户控件的客户端Id

我使用的一些JS方法:

function WebDataGridControl_AddRow() {    
    // Commit the row that was added to ROWADDING server event
    $find("<%= Me.grdDataTable.ClientID%>")
     .get_behaviors()
     .get_editingCore()
     .get_behaviors().get_rowAdding()._commitRow();
}
function WebDataGridControl_RowSelection_Changed(webDataGrid, evntArgs) {
    // When row is changed, get the index of the row selected
    var grid = $find("<%= Me.grdDataTable.ClientID%>");
    var gridBehaviors = grid.get_behaviors();
    var row = gridBehaviors.get_selection().get_selectedRows().getItem(0);
    $('#<%=hdnEditRow.ClientID%>').val(row.get_index());
}
函数WebDataGridControl\u AddRow(){
//提交添加到ROWADDING服务器事件的行
$find(“”)
.get_行为()
.get_editingCore()
.get_behaviors().get_row adding()。_commitRow();
}
功能WebDataGridControl\u行选择\u已更改(webDataGrid,evntArgs){
//更改行时,获取所选行的索引
变量网格=$find(“”);
var gridBehaviors=grid.get_behaviors();
var row=gridBehaviors.get_selection().get_selectedRows().getItem(0);
$('#').val(row.get_index());
}
谢谢,
AV

我不熟悉WebForms,但是如果不能向javascript函数添加参数,可以将DOM用作某种“全局变量”。呈现页面时,使用客户端id创建一个隐藏输入,例如:
,然后从JS代码中读取输入值:
var gridId=$(“gridTableId”).val()由于在同一父页面中呈现多个用户控件,并且如果每个用户控件都将客户端id设置为隐藏变量gridTableId,那么这将是一个问题,因为“$(“gridTableId”).val()”会看到多个具有相同#id的隐藏变量,并且可能会选择第一个。哦,因此,可以在同一页面中呈现不同的客户端ID。请记住,JavaScript并不严格,因此您可以在函数中创建一个新参数而不破坏基础设施,顺便问一下,这个函数在基础设施中是如何工作的??您可以做的一件事是依赖函数中的
this
,它应该填充源DOM元素,如果您的函数是通过事件触发的,请查看此链接以获取更多信息: