Voici mon jqGrid, qui n'affiche aucune donnée.pourquoi mon jqGrid est vide eventhough json data est présent
Je reçois la réponse JSON pour la grille, mais il n'affiche pas.
Voici ce que j'ai fait jusqu'ici.
<script type="text/javascript">
$.jgrid.no_legacy_api = true;
function getCompanyData() {
//debugger;
$.ajax({
url: "jqGrid_pureJS.aspx/GetCompanyList",
data: "{}", // "{}" For empty input data use "{}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (result) {
//debugger;
var grdData = $("#jqGrid")[0];
grdData.addJSONData(result.d);
},
error: function (result) {
//debugger;
}
});
}
$(function() {
$("#jqGrid").jqGrid({
datatype: getCompanyData,
colNames: ['Id', 'Name', 'Address', 'City', 'Phone'],
colModel: [
{ name: 'F1', index: 'invid', width: 55 },
{ name: 'F2', index: 'invdate', width: 90,editable:true },
{ name: 'F3', index: 'amount', width: 80,editable:true, align: 'right' },
{ name: 'F4', index: 'tax', width: 80,editable:true, align: 'right' },
{ name: 'F5', index: 'total', width: 80,editable:true, align: 'right' }
],
pager: $("#pager"),
rowNum: 10,
rowList: [10, 20, 30],
viewrecords: true,
caption: 'My first grid',
width:800
}).navGrid('#pager', { edit:true,view: true, del: false });
});
</script>
Et voici ma webmethod qui publie des données.
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json,UseHttpGet=false)]
public static string GetCompanyList()
{
var data = GetAllData();
try
{
string response = JsonConvert.SerializeObject(data, Formatting.Indented);
return response;
}
catch (Exception ex)
{
return ex.Message;
}
}
Et voici mon JSON responce capturé:
{"d":"
[\r\n
{\r\n
\"F1\": 1.0,\r\n
\"F2\": \"Name\",\r\n
\"F3\": \"Address\",\r\n
\"F4\": \"City\",\r\n
\"F5\": \"Phone\"\r\n
},
\r\n
{\r\n
\"F1\": 10.0,\r\n
\"F2\": \"abc\",\r\n
\"F3\": \"def\",\r\n
\"F4\": \"asd\",\r\n
\"F5\": \"998907\"\r\n
}
]
}
je pouvais voir la même question jqgrid not showing data, je l'ai vérifié et je ne me débarrasser de mon problème si
Pourquoi les données json ne sont pas ajoutées? Comment fait-on ça ?
Modifier
dans le cadre de la réponse, je l'ai enlevé mon javascript pour appeler le jqGrid et remplacé le code comme affiché dans la réponse par oleg.
J'ai aussi apporté quelques modifications au code côté serveur.
Voici ce que le code côté serveur est:
[WebMethod]
[ScriptMethod(UseHttpGet = false)]
public static string GetCompanyList()
{
var data = GetAllData();
//string response = JsonConvert.SerializeObject(data, Formatting.Indented);
return data;
}
public static string GetAllData()
{
try
{
//Grab the connection string defined in web.config
var connectionString = ConfigurationManager.ConnectionStrings["Test_3ConnectionString"].ConnectionString;
DataTable dt = null;
//Command Text
string commandText = "SELECT * FROM EmpDetails";
dt = SQLHelper.ExecuteDataTable(connectionString, CommandType.Text, commandText, "EmpDetails");
string result = JsonConvert.SerializeObject(dt);
return result;
}
catch (Exception ex)
{
throw;
}
}
Les choses vont heure par heure bizarre. Quand je cours mon application j'ai la grille suivante.
Je ne 9 rows in my table
et affiche viewing 1-10 of 552
.
Quelqu'un peut-il me aider s'il vous plaît ce qui ne va pas avec la sérialisation
Merci pour la réponse. Il semble que le problème au niveau du serveur, je suis incapable de résoudre le problème pour le moment. J'ai utilisé votre code de script qui est correct. J'ai également changé les types de retour des deux méthodes côté serveur à 'DataTable' mais cela ne m'a pas permis de démarrer. Si vous avez des liens pour le WebMethods appelant de jqGrid s'il vous plaît les poster –
s'il vous plaît vérifier mon edit –
@karthik: Vous avez toujours la chaîne 'GetCompanyList()' signature. Il ne devrait pas retourner le type 'string'. Les données JSON renvoyées doivent être comme celles que j'ai postées. Donc 'GetCompanyList' devrait retourner un tableau/une liste d'éléments qui sont des objets ayant des propriétés/champs' F1', 'F2', ...,' F5' – Oleg