如何从亚格访问父电网的id在jqGrid的(How to access parent grid id

2019-09-17 02:54发布

我正在构建其工作正常...电网建设的jqGrid

if (jqent.isReq) {
    sbGrid.Append("subGrid: true,");
    sbGrid.Append("subGridRowExpanded: function (subgrid_id, row_id) {");
    sbGrid.Append(" $('#' + subgrid_id).html(renderhtmlforSubgrid(subgrid_id, row_id));},");
}

我有一个textarea的子网格和将由下面的代码被渲染的图像控制

function renderhtmlforSubgrid(subgrid_id, row_id) {
    var script = '<div style="margin-left:10px; margin-top:10px; margin-bottom:10px;">';
    script += '<textarea class="txtCommentwatermarkOn" id="txtCommentSection" name="txtCommentSection" rows=2 cols=20>Type your comments here</textarea>';
    script += '<input onclick=\"RenderModalPopup(' + row_id + ',' + subgrid_id + ',this);\" type="image" id="image" src="../../Content/Images/commentIcon.png"/>';
    script += '</div>';

    return script;
}

在图像“RenderModalPopup”功能,点击就会被触发

function RenderModalPopup(rowid, tableid, event) {
    var dataFromRow = $('#tblArtifact1').jqGrid('getRowData', rowid);
    var PhaseArtifactId = $('#tblArtifact1').jqGrid('getCell', rowid, 'ID');
    ..........................

每一件事情是工作的罚款...现在的问题的是我硬编码电网的id为“tblArtifact1”获取列值。 需要被去除。 我能得到电网的id? 有没有预定义的参数/功能得到它?

我卡了..请帮助。

Answer 1:

内部回调函数的subGridRowExpanded可以使用this变量被初始化到电网(DOM的的的DOM <table> 所以,你可以得到id由父电网this.id 。 如果你打电话renderhtmlforSubgridsubGridRowExpanded我会建议你使用

renderhtmlforSubgrid.call(this, subgrid_id, row_id)

代替

renderhtmlforSubgrid(subgrid_id, row_id)

在这种情况下this里面renderhtmlforSubgrid功能将不会改变全球window对象,你可以有this持有对你有帮助的信息(如this.id的ID或$(this) jQuery的说唱歌手到父网格)。

我建议你考虑使用idPrefix选项子网格以防止重复的ID(见答案获取更多信息)。

而且我从你的代码中看到,你是更多的C#/ C ++开发的JavaScript开发。 我前2,几年时间已经同样的问题。 JavaScript有一些结构,其靠近著名的其他语言,但深层语义是真的不同。 因此,JavaScript开发人员有许多标准的陷阱,他利用现有建筑在错误的道路。

对于例子:你不应该使用变量,属性或特别是其名称以大写字母开头的功能。 目前RenderModalPopupPhaseArtifactId违反规则。 JavaScript有没有类,但可以创建一个使用功能紧密结构。 里面的功能,您可以分配的属性来this 。 这些功能是“类”的构造,并应具有第一个大写字母。 要创建“类”的情况下,应该使用new 。 例如var now = new Date();

闭包是在JavaScript看起来像函数功能的另一个例子,但有很多重要的区别。

此外,我会建议您使用更匿名函数和函数表达式( var renderhtmlforSubgrid = function (subgrid_id, row_id) {...}而不是函数语句)( function renderhtmlforSubgrid (subgrid_id, row_id) {...}并定义所有在功能体的第一行的变量。 JavaScript有没有块级变量声明最喜欢的计算机语言,所以很容易产生错误的代码,如果你定义的JavaScript代码中的变量。

最后一个建议是使用Kernighan和Ritchie的风格的代码格式化JavaScript代码独立于您使用您最喜爱的计算机语言使用的样式。 它会阻止你的自动分号插入 ,它可以使严重的错误,这是很难定位。



文章来源: How to access parent grid id from subgrid in jqgrid