2015-07-24 2 views
2

Я создал общую функцию, поэтому я могу использовать один и тот же код на разных страницах.JQuery-Bootgrid, строка имеет значение null при нажатии

Я загружаю данные с помощью Ajax, обновляю таблицу, когда изменяется значение DropDown. Когда я нажимаю на строке значение равно нулю:

Это моя DataTable функция

function dataTable() { 

    var self = this; 


    self.url = ""; 
    self.gridObject = null; 

    self.Initilize = function (tableDiv, url) { 
     self.url = url; 
     self.gridObject = $("#" + tableDiv).bootgrid({ 
      formatters: { 
       "commands": function (column, row) { 
        return "<button type=\"button\" class=\"btn btn-sm btn-success command-edit\" data-row-id=\"" + row.Id + "\"><span class=\"fa fa-pencil\"></span></button> " + 
         "<button type=\"button\" class=\"btn btn-sm btn-danger command-delete\" data-row-id=\"" + row.Id + "\"><span class=\"fa fa-trash-o\"></span></button>"; 
       } 
      }, 
      requestHandler: function (request) { 

       var model = fleetMaintenance.filterModel.GetModel(); 
       model.Current = request.current; 
       model.RowCount = request.rowCount; 
       model.Search = request.searchPhrase; 
       return JSON.stringify(model); 
      }, 
      ajaxSettings: { 
       method: "POST", 
       contentType: "application/json" 
      }, 
      ajax: true, 
      url: self.url, 
      selection: true, 
     }).on("loaded.rs.jquery.bootgrid", function() { 


      self.gridObject.find(".command-edit").on("click", function (e) { 
       // e.stopPropagation(); 
       alert("You pressed edit on row: " + $(this).data("row-id")); 
      }).end().find(".command-delete").on("click", function (e) { 
       // e.stopPropagation(); 
       alert("You pressed delete on row: " + $(this).data("row-id")); 
      }); 

      self.gridObject.on("click.rs.jquery.bootgrid", function (e, columns, row) { 
       console.log(row); 

       debugger; 
      }); 
     }); 
    }, 
    self.RefreshTable = function() { 
     self.gridObject.bootgrid('reload'); 
    } 
} 

HTML:

<div class="box"> 
    <div class="box-header"> 
     <div class="col-md-6"> 
      <h3 class="box-title">Sites</h3> 
     </div> 
    </div> 

    <div class="box-body"> 
     <div class="row"> 
      <div class="col-md-12"> 
       <table id="sitesList" class="table table-condensed table-hover table-striped"> 
        <thead> 
         <tr> 
          <th data-column-id="iSiteId" data-identifier="true">Id</th> 
          <th data-column-id="sSiteName" data-order="desc">Site Name</th> 
          <th data-column-id="commands" data-formatter="commands" data-sortable="false">Commands</th> 
         </tr> 
        </thead> 
       </table> 
      </div> 
     </div> 

    </div> 

</div> 

А потом использовать это, чтобы создать JQGrid таблицу:

<script type="text/javascript"> 

     var tble = new dataTable(); 

    $(function() { 

     tble.Initialize('sitesList', '/Sites/SitesList') 


     $('*[data-action="RefreshTable"]').change(function (e) { 
      var dropDown = $(this); 

      tble.RefreshTable(); 

     }); 

    }); 

</script> 

Мне нужно перезагрузить другую таблицу, когда пользователь нажимает на строку в этой таблице: но строка NULL

enter image description here

Примечание: Это не случалось, когда я не загрузки данных с помощью Ajax:

ответ

4

Только в случае, если кто-то имеет эту проблему:

Похоже, что мы должны установить data-type="numeric" в Id Column, если я удалю этот атрибут данных, строка на клике будет NULL:

<table id="sitesList" class="table table-condensed table-hover table-striped"> 
    <thead> 
     <tr> 
      <th data-column-id="iSiteId" data-identifier="true" data-type="numeric">Id</th> 
      <th data-column-id="sSiteName" data-order="desc">Site Name</th> 
      <th data-column-id="sNotes">Notes</th> 
      <th data-column-id="commands" data-formatter="commands" data-sortable="false">Commands</th> 
     </tr> 
    </thead> 
    <tbody></tbody> 
</table> 
Смежные вопросы