I have a Grid with a detail template to show another records related to the main data set. I'm trying to export everyting to excel but when i export it excel says "Excel found unreadable content" if i make the function to return an empty list to the export function the excel file has no problem it shows nothing about details but columns names. but if i return the dataset that i need the message of unreadable content is shown.
i've followed the example http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/how-to/excel/detail-grid-export and http://docs.telerik.com/kendo-ui/controls/data-management/grid/how-to/excel/detail-grid-export so the functions are practically the same
var detailExportPromises = [];
var dataSource = new kendo.data.DataSource({
type: "aspnetmvc-ajax",
transport: {
read: "@Url.Action("Fracciones_Read", "Home")",
type: "POST"
},
schema: {
data: "Data",
total: "Total",
error: "Errors"
}
});
dataSource.read();
function dataBound() {
detailExportPromises = [];
this.expandRow(this.tbody.find("tr.k-master-row").first());
}
function parameters() {
return {
fechaIni: $("#fechaIni").data("kendoDatePicker").value(),
fechaFin: $("#fechaFin").data("kendoDatePicker").value(),
operacion: "Imp"
}
}
function fracciones_excelExport(e) {
e.preventDefault();
}
function excelExport(e) {
e.preventDefault();
var workbook = e.workbook;
detailExportPromises = [];
var masterData = e.data;
for (var rowIndex = 0; rowIndex < masterData.length; rowIndex++) {
exportChildData(masterData[rowIndex].NumeroPedimento, rowIndex);
}
// wait for all detail grids to finish exporting
$.when.apply(null, detailExportPromises)
.then(function () {
// get the export results
var detailExports = $.makeArray(arguments);
// sort by masterRowIndex
detailExports.sort(function (a, b) {
return a.masterRowIndex - b.masterRowIndex;
});
// add an empty column
workbook.sheets[0].columns.unshift({ width: 30 });
// prepend an empty cell to each row
for (var i = 0; i < workbook.sheets[0].rows.length; i++) {
workbook.sheets[0].rows[i].cells.unshift({});
}
// merge the detail export sheet rows with the master sheet rows
// loop backwards so the masterRowIndex doesn't need to be updated
for (var i = detailExports.length - 1; i >= 0; i--) {
var masterRowIndex = detailExports[i].masterRowIndex + 1;
var sheet = detailExports[i].sheet;
// prepend an empty cell to each row
for (var ci = 0; ci < sheet.rows.length; ci++) {
if (sheet.rows[ci].cells[0].value) {
sheet.rows[ci].cells.unshift({});
}
}
// insert the detail sheet rows after the master row
[].splice.apply(workbook.sheets[0].rows, [masterRowIndex + 1, 0].concat(sheet.rows));
}
// save the workbook
kendo.saveAs({
dataURI: new kendo.ooxml.Workbook(workbook).toDataURL(),
fileName: "Importaciones.xlsx"
});
});
}
function exportChildData(NumeroPedimento, rowIndex) {
var deferred = $.Deferred();
detailExportPromises.push(deferred);
var rows = [{
cells: [
{ value: "DescripcionFactura" },
{ value: "DescripcionPedimento" },
{ value: "Arancel" }
]
}];
dataSource.filter({ field: "NumeroPedimento", operator: "eq", value: NumeroPedimento });
var exporter = new kendo.ExcelExporter({
columns: [
{ field: "DescripcionFactura" },
{ field: "DescripcionPedimento" },
{ field: "Arancel" }
],
dataSource: dataSource
});
exporter.workbook().then(function (book, data) {
deferred.resolve({
masterRowIndex: rowIndex,
sheet: book.sheets[0]
});
});
}
</script>
columns.Bound(m => m.UserName).Title("User Name").Width(115).Filterable(f => f.Cell(c => c.Operator("contains").ShowOperators(false).MinLength(5000)));
I am try to create a simple diagram, indicating the position of a record within a workflow. All I need is a line of different coloured circles, appropriately coloured, along with a label.
I have managed most of this, however the connectors, rather than linking to the circles, always use the text blocks to link to, meaning the lines are never straight, and not connected to the shapes.
How can I force the connectors to link to the shapes, and ignore the text?
I've attached a screenshot of the result I currently get.
Below is the page code:-
@{
ViewBag.Title =
"Index"
;
}
<h2>TEST</h2>
<script>
function
visualTemplate(options) {
var
dataviz = kendo.dataviz;
var
g =
new
dataviz.diagram.Group();
var
dataItem = options.dataItem;
g.append(
new
dataviz.diagram.Circle({
width: 50,
height: 50,
fill: dataItem.Colour,
stroke: {
width: 0
}
}));
g.append(
new
dataviz.diagram.TextBlock({
text: dataItem.PositionName,
x: 60,
y: 20,
color:
"black"
}));
return
g;
}
</script>
<div>
@(Html.Kendo().Diagram()
.Name(
"diagram"
)
.DataSource(dataSource => dataSource
.Read(read => read
.Action(
"GetWFData"
,
"Test"
)
)
.Model(m => m.Children(
"Items"
))
)
.Editable(
false
)
.Pannable(
false
)
.Zoom(0)
.Layout(l => l.Type(DiagramLayoutType.Layered))
.ShapeDefaults(sd => sd
.Visual(
"visualTemplate"
)
)
.ConnectionDefaults(cd => cd
.Stroke(s => s
.Color(
"#979797"
)
.Width(2)
)
)
)
</div>
Thanks
Hi Team, Below is my requirement.
In a page,I have multiple KENDO MVC Grids where in some of grids i have Add & Update commands. I need to display Confirm Model dialog before submitting the row to controller. I didnt find any events to do this.
Please help. Thanks. Below is my MVC grid code
@(Html.Kendo().Grid<iMAP.SRT.Core.SRTPRODUCT>().Name("SRT").Columns(columns =>{ columns.Command(command => { command.Edit(); }).HeaderHtmlAttributes(new { @class = "headercolumn" }).Width(130); columns.Bound(c => c.ACTIVE).Title("ACTIVE").HeaderHtmlAttributes(new { @class = "headercolumn" }).ClientTemplate("<input type='checkbox' #= ACTIVE ? checked='checked' :'' # />").Width(60); columns.Bound(c => c.CODE).Title("PRODUCT CODE").HeaderHtmlAttributes(new { @class = "headercolumn" }).Width(120); columns.Bound(c => c.DESCR).Title("DESCRIPTION").HeaderHtmlAttributes(new { @class = "headercolumn" }).Width(360);}).ToolBar(toolbar => { toolbar.Create(); })//.ToolBar(toolBar => toolBar.Template(@"<a id='addSome' class='k-button k-button-icontext k-grid-add' onclick='PDSBOMResults();'><span class='k-icon k-add'></span>Add new record</a>")).Editable(editable =>{ editable.Mode(GridEditMode.InLine).Window(window =>{ window.HtmlAttributes(new { @class = "k-window-titlebar;k-window-title;k-grid-update;k-grid-cancel;k-window-action;k-icon k-update;" });});}).Editable(editable => editable.Mode(GridEditMode.InLine)).HtmlAttributes(new { style = "height:500px;" }).Groupable().Scrollable(scrollable => scrollable.Virtual(true)).Selectable(selectable => selectable .Mode(GridSelectionMode.Multiple)).Filterable()//.Filterable(ftb => ftb.Mode(GridFilterMode.Row)).Resizable(resize => resize.Columns(true)).Events(x => x.Edit("popupProductsModule").DataBound("onGrisDataBound"))//.Events(events => events.Edit(@<text>function (e) {if (e.model.isNew() == false) {$("#CODE").attr("readonly", true);$("#CREATED").attr("hidden", true);$("#CREATEDBY").attr("hidden", true);$("label[for='CREATED']").attr("hidden", true);$("label[for='CREATEDBY']").attr("hidden", true)}}</text>)).DataSource(dataSource => dataSource .Ajax().Events(events => events.RequestEnd("onRequestEndForProducts")).Model(model =>{ model.Id(p => p.PRODUCTID); model.Field(p => p.CODE).Editable(true);}).Create(update => update.Action("InsertKBProducts", "SrtProject").Data("passParamsForInsertKBProducts")).Read(read => read.Action("GetKBProducts", "SrtProject").Data("getMainProductdetailsParams")).Update(update => update.Action("UpdateKBProducts", "SrtProject").Data("passParamsForUpdateKBProducts")).Destroy(update => update.Action("DeleteKBProducts", "SrtProject"))))
Hi,
Can a bar chart have multiple bars on a single line? (Note: the letters represent bars) If so, is there an example?
-----------------------------------------------------------------------------------------------------------------
| xxxxxxx yyyyyyyyy zzz
| aaaa bbbbb ccccc
| wwwwwwwwwwwwwwwwwwwwwww
------------------------------------------------------------------------------------------------------------------
Thanks
Scott
Hi I need a column.which needs to be editable in inline edit mode and should be non editable at insert mode.As well we need to have two different list in either case.in insert mode only filtered list should be shown and in edit mode all record should be shown in grid columns dropdown.
Hi ,
I just updated my libraries to the latest one 2016.1.112.545 and now the bottom border of an input widget is missing at a particular zoom level in Chrome browser but it works fine in IE and Firefox. Any help appreciated.
Thank you
Below is code where I am trying to create master detail grids where data is fed through list of objects. When I run it I do get master detail grids, but when I try to do sorting, filtering, paging, I lose my page and I am sent back to home page. And If I use alternate DataSource code as below I get error "Cannot use only server templates in Ajax or WebService binding mode. Please specify a client template as well."
Please advice. Thanks.
My model is something like this
public partial class Invoice
{
public int InvoiceNumber{ get; set; }
..
..
public List<IvDetail> IvDetails { set; get; }
}
And here is view code.
@model IEnumerable<Portal.Models.Invoice>
@{ Html.Kendo().Grid(Model)
.Name("InvoiceGrid")
.Pageable()
.Columns(columns =>
{
columns.Bound(p => p.InvoiceNumber).Filterable(true).Title("Invoice Number");
columns.Bound(p => p.InvoiceDate).Title("Invoice Date");
columns.Bound(p => p.InvoiceTotal).Title("Invoice Total");
columns.Bound(p => p.Balance).Title("Balance");
})
.Filterable()
.Sortable()
.Navigatable()
.DataSource(dataSource => dataSource.Server().PageSize(15))
// this gives error "Cannot use only server templates in Ajax or WebService binding mode. Please specify a client template as well."
//.DataSource(datasource => datasource
// .Ajax()
// .PageSize(15)
// .ServerOperation(false)
// .Sort(sort =>
// {
// sort.Add(p => p.InvoiceNumber);
// })
// )
.DetailTemplate(
@<text>
@(Html.Kendo().Grid(item.IvDetails)
.Name("IvDetails_" + item.InvoiceNumber)
.Columns(columns =>
{
columns.Bound(o => o.ItemNumber);
columns.Bound(o => o.PartNumber);
columns.Bound(o => o.Description);
})
.DataSource(dataSource => dataSource.Server().PageSize(15))
.Pageable()
.Sortable()
.Filterable()
)
</text>
)
.Sortable()
.Render();
}