绑定到动态表的问题

时间:2014-04-16 12:08:17

标签: javascript jquery jqgrid

我在这个样本上工作了3天,最后一步!请有人帮助我!!

任何帮助都很明显!!

我正在加载动态表,我想在列上附加网格。我创建了一个绑定jqgrid的函数。所以当我绑定一个表时,我用一个参数调用这个函数,

这里的问题是如果我直接给出参数它是否正常工作,但是如果我想自动加载它则不起作用。

我将在下面用代码解释:

  function bindData() {

  $.ajax({
    type: "POST",
    url: location.pathname + "/getData",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    datatype: "jsondata",
    async: "true",
    success: function (response) {
        var msg = eval('(' + response.d + ')');
        if ($('#tblResult').length != 0) // remove table if it exists
        { $("#tblResult").remove(); }
        var table = "<table class='tblResult' id=tblResult><thead> <tr><th>Name</th><th>SurName</th><th>Email</><th>Mobile</th><th>Address</th><th>Actions</th><th>image</th><th>Country</th><th>State</th><th>Gender</th><th>Add.Mobile</th></thead><tbody>";

        for (var i = 0; i <= (msg.length - 1); i++) {
            var row = "<tr>";
            row += '<td>' + msg[i].Name + '</td>';
            row += '<td>' + msg[i].SurName + '</td>';
            row += '<td>' + msg[i].Email + '</td>';
            row += '<td>' + msg[i].Mobile + '</td>';
            row += '<td>' + msg[i].Address + '</td>';
            row += '<td><img id="im" src="/User_Registration1/images/edit.png" title="Edit record." onclick="bindRecordToEdit(' + msg[i].EmployeeId + ')" />  <img src="/User_Registration1/images/delete.png" onclick="deleteRecord(' + msg[i].EmployeeId + ')" title="Delete record." /></td>';
            row += '<td><img class="img" src=' + msg[i].FileName + ' alt="--NO IMAGE--"/></td>';
            row += '<td>' + msg[i].Country + '</td>';
            row += '<td>' + msg[i].StateName + '</td>';
            row += '<td>' + msg[i].Gender + '</td>';
            row += '<td style="width:250px;height:120px;"><table id="tblSub' + msg[i].Name + '"></table><script> $(document).ready(function () { BindGrid("AjjiAjji");});</script></td>';
            row += '</tr>';
            table += row;
        }
        table += '</tbody></table>';
        $('#divData').html(table);
        $("#divData").slideDown("slow");

    },
    error: function (response) {
        alert(response.status + ' ' + response.statusText);
    }
});

}

通过调用javascript函数查看我附加网格视图的最后一列。

js功能:

       function BindGrid(user) {
       $(document).ready(function () {

        $("#tblSub"+user).jqGrid({
            loadError: function (xhr, status, error) {

                alert('load:' + error);
            },
            url: 'Fetch.aspx?filter=' + user + '',

            data: "{}",
            datatype: 'json',
            colNames: ['Name', 'Mobile'],
            colModel: [
            {
                name: 'User',
                index: 'User',
                width: 100,
                align: "left",
                editable: true,
                size: 80
            },
            {
          .
          .
          .

所以如果我通过 BindGrid(&#34; AjjiAjji&#34;)它工作正常,但我想自动加载网格,如 BindGrid(&#39; + msg [i] .Name +&#39;),显示错误&#34; ReferenceError:未定义AjjiAjji&#34;

2 个答案:

答案 0 :(得分:1)

我认为您忘记添加双引号,结果为BindGrid (AjjAjj)。试试这个:

BindGrid("'+msg[i].Name+'")

这应该可以正常工作

答案 1 :(得分:0)

我认为问题在于你将jqGrid附加到“$(”#tblSub“+ user)”的时间在DOM中不存在。 你应该只在$('#divData')之后调用BindGrid函数.html(table);这是将表添加到DOM中。

这样jqGrid可以正常工作。