jqGrid - "editable":"true" in der JSON-Antwort für grid-Spalten
Problem 1
Habe ich die Säulen-Modell als
{name:'fname',index:'fname', width:50, align:"center", resizable:false},
{name:'lname',index:'lname', width:50, align:"center", resizable:false},
{name:'date',index:'date', width:50, align:"center", resizable:false, editable:true}
Wenn ich den jqGrid JSON-Antwort, um die Namen der Spalten, die jqGrid Datenzeilen sind leer, ohne Daten
{
"rows":[
{
"id":"1",
"cell":{
"fname":"S",
"lname":"K",
"date":"11/11/2011"
}
}
],
"userdata":{"amount":3220,"tax":342,"total":3564,"name":"Totals:"}
}
Problem 2-ich habe versucht, hinzufügen "editierbar", innerhalb der Zelle definition (mit oder ohne den Namen der Spalten. Hier zeige ich die JSON Struktur mit den Spaltennamen.), jqGrid-Daten-Zeilen sind wieder leer
{
"rows": [
{
"id": "1",
"cell": {
"fname": "S",
"lname": "K",
"date": [
{
"date": "11/11/2011",
"editable": "true"
}
]
}
}
],
"userdata": {
"amount": 3220,
"tax": 342,
"total": 3564,
"name": "Totals:"
}
}
Die Zellen der Tabelle gezogen werden, aber jqGrid ist nicht Kommissionierung bis die JSON-Daten.
Was mache ich falsch?
jqGrid JSONReader
jQuery("#editjqGrid").jqGrid({
url: "http://localhost/edit.json",
datatype: "json",
contentType: "application/x-javascript; charset=utf-8",
colNames:['fname','lname', 'date'],
colModel:[
{name:'fname',index:'fname', width:50, align:"center", resizable:false},
{name:'lname',index:'lname', width:50, align:"center", resizable:false},
{name:'date',index:'date', width:50, align:"center", resizable:false, editable:true}
],
loadComplete: function (data) {
var item, i, l = data && data.rows.cell ? data.rows.cell.length : 0;
for (i = 0; i < l; i++) {
item = data.rows.cell[i];
if (item.editable === "false") {
$("#" + item).addClass("not-editable-cell");
}
}
}
});
jQuery("#editjqGrid").jqGrid('navGrid','#pager2',{add:false,del:false,edit:false,position:'right',minWidth:800,maxWidth:1405,minHeight:350,maxHeight:680});
UPDATE: Hinzufügen von inline-Optionen für die Bearbeitung einer bestimmten Zelle im JSON -
{
"rows": [
{
"id": "1",
"cell": {
"fname": "S",
"lname": "K",
"date": {
"value": "11/11/2011",
"editable": "true",
"edittype":"input",
"editoptions":{
"size":"20",
"maxlength":"30"
}
}
"emptype":{
"editable":"true",
"edittype":"select",
"editoptions":{
"option":"Full Time",
"option":"Part Time",
"option":"Hourly"
}
}
}
}
],
"userdata": {
"amount": 3220,
"tax": 342,
"total": 3564,
"name": "Totals:"
}
}
UPDATE 2: Nahm 'Zelle'
{
"rows": [
{
"id": "1",
"fname": "S",
"lname": "K",
"date": {
"value": "11/11/2011",
"editable": "true",
"edittype":"input",
"editoptions":{
"size":"20",
"maxlength":"30"
}
}
"emptype":{
"editable":"true",
"edittype":"select",
"editoptions":{
"option":"Full Time",
"option":"Part Time",
"option":"Hourly"
}
}
}
]
}
UPDATE 3: wieder Hinzugefügt 'Zelle' und modifiziert die edittype und editoptions
{
"rows": [
{
"id": "1",
"cell": {
"fname": "S",
"lname": "K",
"date": {
"value": "11/11/2011",
"editable": "true",
"edittype":"text",
"editoptions":{
"size":"20",
"maxlength":"30"
}
}
"emptype":{
"editable":"true",
"edittype":"select",
"editoptions":{
"value":"Full Time",
"value":"Part Time",
"value":"Hourly"
}
}
}
}
]
loadComplete - 'nicht-editierbare-Zelle', die nicht arbeiten
loadComplete: function (data) {
var rowItem, x, l = data && data.rows ? data.rows.length : 0;
for (x = 0; x < l; x++) {
if (data.rows[x].cell.date.editable === "false") {
$("#" + data.rows[x].id + "td[aria-describedby='editTimecard_date']").addClass("not-editable-cell");
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem 1 ist sehr einfach. In der JSON verwenden Sie
"cell"
und benannte Eigenschaften zusammen, die falsch ist für die Standard-JSON-reader. So kann man das problem auf zwei ArtenDer erste Weg. Sie ändern sich nicht, das JSON-format der Daten, sondern fügen
jsonReader: {repeatitems: false}
parameter undjsonmap
mitcell.
Präfix in jeder Spalte:(siehe die demo).
Der zweite Weg. Verwenden Sie nur
jsonReader: {repeatitems: false}
und entfernencell
Teil von JSON-Daten:(siehe eine weitere demo).
In Ihrem zweiten Teil der Frage finde ich sehr seltsam-format der
"date"
Teil der JSON-Daten. Warum wird der Wert der Eigenschaft ist array? Könnte es mehr als eines posten? Wie die Daten angezeigt werden sollen, der Fall? Ich denke, Sie sollten ändern Sie das format der Daten.problem 1
.Problem 2
- mein bad im json-Format. Ich habe aktualisiert es in der original-post unter der überschrift "AKTUALISIERT". Im Grunde möchte ich alle inline-Bearbeiten-Optionen gesteuert werden im json-Format."editable": "true"
aus der JSON-input werden"editable": true
? Ist 'date' die einzige Spalte, können bearbeitet werden?"editable":"true"
oder"editable":true
macht keinen Unterschied, soweit jqgrid-rendering betrifft. Aber ja, "wahr" ist ein string und true ist ein Boolscher Wert. Nein, eine beliebige Anzahl von Feldern kann geändert werden. Beispiel: aus 10 Spalten, nur 5 können bearbeitet werden."cell"
Eigenschaft. Problem 2: Du solltest besser definieren staticjsonReader
die Arbeit wird für jede Spalte (editierbar oder nicht). Derzeitlname
Eigenschaft kann direkt gelesen werden und das Lesen von Werten für die'date'
Spalte benötigen, Lesen Sievalue
Eigenschaft. Der Wert vonlname
string ist, den Wert vondate
ist Objekt, den Wert vonemptype
istundefined
. Problem 3: Sie nicht halten Sie Arten von Immobilien imcolModel
:editable
ist ein boolean -editoptions
füremptype
ist absolut falsch.'cell"
Eigenschaft. Fehler 2 Wie definieren Sie staticjsonReader
? Ich nahmjsonMap
von der Säulen-Modell und haben es alsjsonReader:{repeatitems:false}
. Aufgabe 3 JSON-Struktur gültig ist, also ich verstehe das nicht.jsonReader:{repeatitems:false}
Lesen kann"date":"11/11/2011"
(nicht editierbaren Feld), aber nicht in der gleichen Zeit"date":{value:"11/11/2011","editable": true, ...}
. So sollten Sie"editable": true, editoptions: {..}
aus dem Wert der"date"
Eigenschaft von JSON. Aufgabe 3: ich meine, dassedittype
Wert"text"
und nicht"input"
, dasseditoptions
vonedittype:"select"
werden sollte, in andere Formate wievalue:...
. Wenn Sie jqGrid standard kann man nur verwenden$.extend
um die Möglichkeit, statt die Analyse und Entschlüsselung der input-format."editable"
- und anderen inline-editing-Optionen, die in json, ohne Sie definieren zu müssen, in dercolModel
. Auf der anderen Seite, ich verstehe deine Reaktion, zu sagen, dass es nicht möglich ist, die Kontrolle über diese Optionen über json-Antwort. Ich bin verwirrt."editable": true, editoptions: {..}
aus der"date"
Eigenschaft, wie können Sie es nur für 'Datum' ie eine Zelle? Ich bin nicht versuchen zu kontrollieren, editierbare feature für die gesamte Zeile.loadComplete
ist nicht das hinzufügen der Klasse'not-editable-cell'
Zelleeditable:false
loadComplete()
. Können Sie pls helfen Sie mir mit der JSON-Struktur fürselect
?haben Sie einen Blick auf jqGrid inline Bearbeiten
Es zeigt ein Beispiel, wie conditionaly Bearbeiten Zeile
code-snippet:
date
nur, wenn die json-Daten enthälteditable: true
?