Hi kendo ui team,
On expand i make post request which returns list from a hashmap depending on requested id. Each rendered list is a nested row inside grid with unique id.
Issue is while expending each row i get only 1st nested row updated with results basically row id reference is missing and grid widget doesn't know which nested row to update. Any suggestions and recommendations appreciated.
here is some code:
JSP
Java servlet:
On expand i make post request which returns list from a hashmap depending on requested id. Each rendered list is a nested row inside grid with unique id.
Issue is while expending each row i get only 1st nested row updated with results basically row id reference is missing and grid widget doesn't know which nested row to update. Any suggestions and recommendations appreciated.
here is some code:
JSP
<%
HashMap<
String
, Object> data = new HashMap<
String
, Object>();
data.put("itemId", "#=itemId#");
%>
<
kendo:grid
name
=
"item"
pageable
=
"true"
detailTemplate
=
"template"
>
<
kendo:dataSource
>
<
kendo:dataSource-transport
>
<
kendo:dataSource-transport-read
url
=
"http://localhost:8080/GrubbyUI/api/items"
/>
</
kendo:dataSource-transport
>
<
kendo:dataSource-schema
data
=
"data"
total
=
"total"
/>
</
kendo:dataSource
>
<
kendo:grid-columns
>
<
kendo:grid-column
title
=
"id"
field
=
"itemId"
></
kendo:grid-column
>
</
kendo:grid-columns
>
</
kendo:grid
>
<
kendo:grid-detailTemplate
id
=
"template"
>
<
kendo:grid
name
=
"innerData"
>
<
kendo:dataSource
>
<
kendo:dataSource-transport
>
<
kendo:dataSource-transport-read
url
=
"http://localhost:8080/GrubbyUI/api/items"
data="<%=data %>" type="POST" contentType="application/json "/>
<
kendo:dataSource-transport-parameterMap
>
<
script
>
function parameterMap(options) {
return JSON.stringify(options);
}
</
script
>
</
kendo:dataSource-transport-parameterMap
>
</
kendo:dataSource-transport
>
</
kendo:dataSource
>
<
kendo:grid-columns
>
<
kendo:grid-column
title
=
"id"
field
=
"itemId"
></
kendo:grid-
<kendo:grid-column
title
=
"Date Added"
field
=
"dateAdded"
></
kendo:grid-column
>
</
kendo:grid-columns
>
</
kendo:grid
>
</
kendo:grid-detailTemplate
>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try
{
// objects for keeping data structures
DataModel result =
new
DataModel();
DataSourceResult data =
new
DataSourceResult();
Gson gson =
new
Gson();
data.setData(result.listOfItems());
data.setTotal(result.getTotal());
response.setContentType(
"application/json"
);
response.getWriter().write(gson.toJson(data));
}
catch
(Exception e) {
response.sendError(500);
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Gson gson =
new
Gson();
// some random data for testing purposes
HashMap<String, List<Item>> data =
new
HashMap<String, List<Item>>();
// response data struct
List<Item> l1 =
new
ArrayList<Item>();
List<Item> l2 =
new
ArrayList<Item>();
BufferedReader reader = request.getReader();
String line = reader.readLine();
Map<String, String> map = gson.fromJson(line, Map.class);
String selectedId = map.get(
"itemId"
);
System.out.println(selectedId);
// init data var
Item item1 =
new
Item(
"lib"
,
"#1"
,
false
,
"date"
);
Item item2 =
new
Item(
"lib 2"
,
"#2"
,
true
,
"date"
);
l1.add(item1);
l1.add(item2);
data.put(
"1"
, l1);
item1 =
new
Item(
"lib 3"
,
"#3"
,
true
,
"date"
);
item2 =
new
Item(
"lib 4"
,
"#4"
,
false
,
"date"
);
l2.add(item1);
l2.add(item2);
data.put(
"2"
, l2);
response.setContentType(
"application/json"
);
response.getWriter().write(gson.toJson(data.get(selectedId)));
}