在backgrid.js中加载数据时加载图标

时间:2013-08-19 06:02:47

标签: jquery-ui jquery backbone.js backgrid

嗨我有一些重要的数据。当我的网格加载数据时,它什么也没显示,突然显示整个数据..我不知道如何将加载图标放在屏幕上?

如果可能请提供小提琴。 现在我的代码是这样的: -

var Territory = Backbone.Model.extend({});

var PageableTerritories = Backbone.PageableCollection.extend({
  model: Territory,
  url: urlvariable,
  state: {
    pageSize: 15
  },
  mode: "client" // page entirely on the client side
});

 var TitledUriCell = Backgrid.TitledUriCell = Backgrid.UriCell.extend({

  /** @property */
  className: "titled-uri-cell",

  render: function() {
    this.$el.empty();
    var formattedValue = this.formatter.fromRaw(this.model.get(this.column.get("name")));
    var measureVal = this.formatter.fromRaw(this.model.attributes.MeasureCategory);
    this.$el.append($("<a href='/inpatient_detail/" + formattedValue + "''> Delete</a>" 
   ).text(formattedValue));
    this.delegateEvents();
    return this;
  }
 });


var pageableTerritories = new PageableTerritories();
var columns = [{

    // name is a required parameter, but you don't really want one on a select all column
    name: "PatientId",

    // Backgrid.Extension.SelectRowCell lets you select individual rows
    cell: "select-row",

    // Backgrid.Extension.SelectAllHeaderCell lets you select all the row on a page
    headerCell: "select-all",

  },{
  name: "FirstName",
  label: "First Name",
  editable: false,
  // The cell type can be a reference of a Backgrid.Cell subclass, any Backgrid.Cell subclass instances like *id* above, or a string
  cell: "string" // This is converted to "StringCell" and a corresponding class in the Backgrid package namespace is looked up
}, {
  name: "LastName",
  label: "Last Name",
  editable: false,
  cell: "string" // An integer cell is a number cell that displays humanized integers
}, {
  name: "PatientId",
  label: "Patient Id",
  editable: false,
  cell: "titledUri" // A cell type for floating point value, defaults to have a precision 2 decimal numbers
}, {
  name: "RoomNumber",
  label: "Room Number",
  editable: false,
  cell: "string" // A cell type for floating point value, defaults to have a precision 2 decimal numbers
}, {
  name: "AdmissionDate",
  label: "Admission Date",
  editable: false,
  cell: "date" // A cell type for floating point value, defaults to have a precision 2 decimal numbers
}, {
  name: "DischargeDate",
  label: "Discharge Date",
  editable: false,
  cell: "date" // A cell type for floating point value, defaults to have a precision 2 decimal numbers
}, {
  name: "MeasureCategory",
  label: "MeasureCategory",
  editable: false,
  cell: "string" // A cell type for floating point value, defaults to have a precision 2 decimal numbers
}];
// Set up a grid to use the pageable collection

var pageableGrid = new Backgrid.Grid({
  columns: columns,
  collection: pageableTerritories
});
// var selectedModels = grid.getSelectedModels();
// backgriCollections.remove(selectedModels);




// Render the grid
$("#grid").empty();

var $example2 = $("#grid");

$example2.append(pageableGrid.render().$el)

// Initialize the paginator
var paginator = new Backgrid.Extension.Paginator({
  collection: pageableTerritories
});

// Render the paginator
$example2.append(paginator.render().$el);

// Initialize a client-side filter to filter on the client
// mode pageable collection's cache.
var filter = new Backgrid.Extension.ClientSideFilter({
  collection: pageableTerritories.fullCollection,
  placeholder: "Search in Grid on First Name",
  fields: ['FirstName']
});

// Render the filter
 $example2.prepend(filter.render().$el);



// Add some space to the filter and move it to the right
filter.$el.css({float: "right", margin: "20px"});

// Fetch some data
pageableTerritories.fetch({reset: true});
$example2.append( '<div class = "newb"><table><tr><%= button_tag "Add a Patient",:class=>"btn btn-primary"%><%= form_tag("/PatientManagement/CurrentInpatient2", method: "post",:id=>"testform") do %><%= text_field_tag "patientIdsDel",nil,:type=>"hidden" %><%= text_field_tag "hospitalId",current_user.hospital.name,:type=>"hidden"%><%= text_field_tag "processType","inpatient",:type=>"hidden"%><%= submit_tag "Delete Selected",:id=>"2",:onclick => "return del()",:class=>"btn btn-primary"%><%end%>&nbsp;&nbsp;<%= form_tag("/PatientManagement/CurrentInpatient2", method: "post") do %><%= text_field_tag "patientIds",nil,:type=>"hidden" %><%= text_field_tag "hospitalId",current_user.hospital.name,:type=>"hidden"%><%= text_field_tag "processType","inpatient",:type=>"hidden"%><%= submit_tag 'Export Selected',:onclick => "return ex()",:class=>"btn btn-primary" %><%end%></tr></table></div>' );
pageableTerritories.on("backgrid:selected", function (model, selected) {

    var size = Object.size(arr);

    var abc=pageableTerritories.state.totalRecords;

  if(selected==true){
    arr[model.attributes.PatientId] =  "'"+model.attributes.MeasureCategory+"'";    
    size=size+1
  }
  else if(selected==false){
    delete arr[model.attributes.PatientId];
    size=size-1

  }


$("#aa").empty();
$("#aa").append("<div style = 'float:left;margin-top: -21px;margin-left: 50px; '><b>"+size+" Selected out of " + abc+ " Records Found </b></div>");


// $example2.append('<h1>hello i am here</h1>');

});
}

1 个答案:

答案 0 :(得分:1)

回答OP的问题有点晚了。但我想为遇到这个帖子的其他人提供一个。

//Instantiate your grid with empty collection
myGrid = new Backgrid.Grid({
    columns: myColumns
    collection: new Backgrid.Collection() //Add an empty collection
    emptyText: "No data to display" //Make sure this is defined
});
myGrid.render();
myGrid.$el.find("td").html("<img src='my-loading-gif.gif' />");

//At this point, the grid should be rendered with a single tr
//and a single td spanning that tr. And the td should contain
//your loading .gif nice and centered.

//Now set the grid with the proper collection and fetch it.
myGrid.collection = myCollection
myCollection.fetch({success: function(){
    myGrid.render(); //This should remove the loading .gif and show your collection
}});

我对jsFiddle并不是很有经验。但尝试一下,它应该工作。 注意:我以前在CoffeeScript工作,所以如果我的语法错误,我会道歉。