Telerik Forums
UI for ASP.NET MVC Forum
3 answers
101 views

I have set up a asp.net MVC web app and in the layout.cshtml I set a mobilelayout and mobiletabstrip.  The mobile application's server navigation has been set to false, so that the partial views are obtained from the controller via ajax but they are only gotten once (never refreshed).  I have set a couple of events on the view for before show and was thinking that I could go and grab the latest partial view from the controller here.

Is this process a good idea or is there a better way?

Veselin Tsvetanov
Telerik team
 answered on 20 Dec 2017
3 answers
228 views

I am getting error after i integrated Cube to Pivotgrid in cshtml. however, cube is producing result in excel when i tried. please see attached image for error and excel result generated from cube.

this is the major piece my manager is looking before he approves Telerik license budget and i have only 3 days left to trial version.

please help ASAP.

here is the code.

 

    @(Html.Kendo().PivotConfigurator()
.Name("configurator")
.HtmlAttributes(new { @class = "hidden-on-narrow" })
.Filterable(true)
.Sortable()
.Height(580)
    )
 
    @(Html.Kendo().PivotGrid()
.Name("pivotgrid")
.ColumnWidth(200)
.Height(580)
.HtmlAttributes(new { @class = "hidden-on-narrow" })
.Filterable(true)
.Sortable()
.Configurator("#configurator")
.DataSource(dataSource => dataSource.
    Xmla()
    .Columns(columns =>
    {
        columns.Add("[Incident].[Status]").Expand(true);
        
    })
    .Rows(rows => rows.Add("[Clients].[Id]"))
    .Measures(measures => measures.Values(new string[] { "[Measures].[Incident Count]" }))
    .Transport(transport => transport
        .Connection(connection => connection
             .Catalog("NextGenToolIncidentCube")
                    .Cube("[IncidentAnalyticalCube"))
        .Read(read => read
            .Url("http://xxxxxxxxxxx/OLAP/msmdpump.dll")
            .DataType("text")
            .ContentType("text/xml")
            .Type(HttpVerbs.Post)
        )
    )
    .Events(e => e.Error("onError"))
)
    )
Preslav
Telerik team
 answered on 19 Dec 2017
1 answer
219 views

Propagating Page properties of a server generated "Telerik.Windows.Documents.Spreadsheet.Model.Workbook" in a web rendered "Telerik.Web.Spreadsheet.Workbook"

 

Heads up, this is only for licensed developers who can access the commercial library source code.

 

At present the documents.spreadsheet workbook has a richer capacity than a web.spreadsheet workbook, especially around page setting.  I don't know the roadmap, but expect at some point the web Spreadsheet component will take on a richer feature set that aligns with Excel application.

A Telerik document workbook is converted to it's web version for viewing in a browser by using the FromDocument() method.  The features that are lost from the sheets of the original document workbook include:

  • page orientation
  • margins
  • scaling
  • headers and footers

The listed items are those I wanted to deal with, there may be more but they were of no concern to me at this time.

My project has a Controller/ViewModel

Telerik.Windows.Documents.Spreadsheet.Model.Workbook serverSideModel;
... lots of serverSideModel method calls that create a spreadsheet, including page settings ...
return View(serverSideModel);

 

and a View

@model Telerik.Windows.Documents.Spreadsheet.Model.Workbook
...
@(
    Html.Kendo().Spreadsheet()
    .Name("mySpreadsheet")
    .BindTo(Telerik.Web.Spreadsheet.Workbook.FromDocument(Model))  //  <--- convert to web version for viewing in browser
    ...
    )

 

At this point the Spreadsheet component in the browser will display the spreadsheet that was created server side.

The component has a download button and you can select to download as an .xlsx.

The downloaded Excel will have lost any page properties that were in the original server side Telerik document.  This is because the internal javascript for creating the excel download does not render any Excel xml related to page layout.

 

Why not?
Because web spreadsheet model does not implement page setup features. The FromDocument() conversion works, but all the page properties info in the document spreadsheet is ignored.

How can this be remedied ?
1. Explicitly add the original pageSetup features to the converted object.
2. Modify library source code to render pageSetup features in the Excel xml that becomes the download.

 

Step 1.
After the web spreadsheet (as a FromDocument) is rendered, the document page properties can be explicitly reattached by code in a kendo.syncReady funtion.
For example, at bottom of the View, add a script block:

<script>
    kendo.syncReady(function () {
 
        var book = $("#mySpreadsheet").data("kendoSpreadsheet");
 
        @for (var index=0; index < Model.Sheets.Count; index++)
        {
            var sheet = Model.Worksheets[index];
            var pageSetup = sheet.WorksheetPageSetup;
            var left = (pageSetup.Margins.Left > 4) ? UnitHelper.DipToInch(UnitHelper.PointToDip(pageSetup.Margins.Left)) : pageSetup.Margins.Left;
            var right = (pageSetup.Margins.Right > 4) ? UnitHelper.DipToInch(UnitHelper.PointToDip(pageSetup.Margins.Right)) : pageSetup.Margins.Right;
            var top = (pageSetup.Margins.Top > 4) ? UnitHelper.DipToInch(UnitHelper.PointToDip(pageSetup.Margins.Top)) : pageSetup.Margins.Top;
            var bottom = (pageSetup.Margins.Bottom > 4) ? UnitHelper.DipToInch(UnitHelper.PointToDip(pageSetup.Margins.Bottom)) : pageSetup.Margins.Bottom;
            var header = (pageSetup.Margins.Header > 4) ? UnitHelper.DipToInch(UnitHelper.PointToDip(pageSetup.Margins.Header)) : pageSetup.Margins.Header;
            var footer = (pageSetup.Margins.Footer > 4) ? UnitHelper.DipToInch(UnitHelper.PointToDip(pageSetup.Margins.Footer)) : pageSetup.Margins.Footer;
            var orientation = (pageSetup.PageOrientation == Telerik.Windows.Documents.Model.PageOrientation.Landscape) ? "Landscape" : "Portrait";
            var scale = pageSetup.ScaleFactor.Width * 100;@* convert from telerik scaleFactor to excel scale % *@
        <text>
        book.sheets()[@index].showGridLines(false);
        book.sheets()[@index].pageSetup = {
                viewTags: 'view="pageBreakPreview" zoomScaleNormal="85" zoomScaleSheetLayoutView="100"'// I know the innards of Excel xml enough to to this.  I did not want to deal making changes in the library source that handled view, zoomScalNormal and zoomScaleSheetLayoutView as actual properties
                margins: {
                    left: @left,
                    right: @right,
                    top: @top,
                    bottom: @bottom,
                    header: @header,
                    footer: @footer},
                orientation: "@(orientation.ToLower())",
                scale: @scale,
                headerFooterSettings: {
                    header: {
                        leftSection: {
                            text: "@pageSetup.HeaderFooterSettings.Header.LeftSection.Text"
                        },
                        centerSection: {
                            text: "@pageSetup.HeaderFooterSettings.Header.CenterSection.Text"
                        },
                        rightSection: {
                            text: "@pageSetup.HeaderFooterSettings.Header.RightSection.Text"
                        }
                    },
                    footer: {
                        leftSection: {
                            text: "@pageSetup.HeaderFooterSettings.Footer.LeftSection.Text"
                        },
                        centerSection: {
                            text: "@pageSetup.HeaderFooterSettings.Footer.CenterSection.Text"
                        },
                        rightSection: {
                            text: "@pageSetup.HeaderFooterSettings.Footer.RightSection.Text"
                        }
                    }
                }
 
        };
        </text>
        }
@*
        replace standard download button response of a Export... dialog
        with a direct download as Excel
*@
        $("#mySpreadsheet .k-i-download")
            .parent(".k-button")
            .unbind()
            .on("click", function (e) {
                $("#mySpreadsheet").data("kendoSpreadsheet").saveAsExcel();
            return false;
        });
    });
</script>

 

Step 2. Modify kendo.all.js

This is for licensed developers only.

Patch your licensed copy of the commercial library source code (v 2017.3.1026) with the attached patch file.

The view must include the modified library code that has been copied into your asp-net mvc project, and can not use the minified cdn version.  The original licensed kendo-ui complete library source code can be downloaded from your account login.

Myview.cshtml

...
    <script src="~/Scripts/kendo/2017.3.1026/js/kendo.all.js"></script>  // modified version contains new magic
...

V

 Now when you download your richly featured server side generated spreadsheet from the view it will still contain those rich features.
   


Veselin Tsvetanov
Telerik team
 answered on 19 Dec 2017
5 answers
423 views
Hi,

In order to have the same functionality in treelist as in grid we have create a new file where we copied the treelist code and added the required functionality. Now we are thinking maybe we should create a new widget derived from treelist and add the extra functionality. (see https://www.telerik.com/forums/treelist-conditional-filter-functionality and/or https://www.telerik.com/forums/visibility-button-widget---share-code-review!-!)

Since we are using the MVC we were wondering: Can we easily create an MVC wrapper for the new widget? Maybe derived from the treelist wrapper, and just change the widget name to use the new widget name instead of the kendotreelist?

Thank you
Alexandra
Alex Hajigeorgieva
Telerik team
 answered on 18 Dec 2017
2 answers
1.1K+ views

Scenario:

I have a Grid, and a column with text, with inline editing and OnChange event.

User Clicks a cell and the OnChange event it fired

Once clicked, a modal window is opened (Standard Bootstrap)

Question:

How do I update that Cell again from the Modal. How do I pass the ID or context of the Cell down the stack to the Modal Window?

I have seen there is a TR data-uid, but I'm not sure how to get it in the click event or how to select it with the api down the road in the modal.

Stefan
Telerik team
 answered on 18 Dec 2017
1 answer
361 views

Hi!

I would like to use the expandRow(...) function on all of my master-rows in grid. All detail records are loaded via Ajax(...) so I need to wait until each and every detail record is loaded.

My code is simple:

myGrid.expandRow(myGrid.tbody.find("tr.k-master-row"));

 

How can I wait until every row is expanded?

Regards
Heiko

 

 

Stefan
Telerik team
 answered on 18 Dec 2017
5 answers
363 views

I'm using 2017.3.1026, and when I add a column menu to  my grid, in IE 11 (version 11.0.9600.18762CO) the menu showing the sort, filter and column options appears on a click, but the fly-out menus don't appear.

However, loading the page in Chrome, the menus work as they should, showing the filter options, and the columns to show / hide.

Is this a bug, or do I need to do anything to fix this in IE?

AP
Top achievements
Rank 1
Iron
Iron
Veteran
 answered on 18 Dec 2017
1 answer
263 views

I have a remote bound grid with a ~1000 row dataset. I have the set the page to refresh the grid every 30 seconds since it is desired to keep the data live.  When the grid does refresh, it takes a few seconds to repopulate. Users find this disrupting as the grid greys out and cannot be scrolled during this time.  Is there a method to refresh the data "in-place"?  Basically in the dataset there may be only 1 or 2 rows that actually change some in the 30s time.  Is there a method to efficiently update the grid only updating the rows that have changed?

Stefan
Telerik team
 answered on 15 Dec 2017
2 answers
198 views

I'm looking at this page http://demos.telerik.com/aspnet-mvc/grid/editing-custom

But there is no editor defined for this control  columns.Bound(p => p.Category).ClientTemplate("#=Category.CategoryName#").Width(180);

It's just the client view template.

Is there a way you could add information to the demo around how the custom editor is working? I see there is a categories viewbag filled with the options but it is never called on the UI or used.

Erik
Top achievements
Rank 2
 answered on 14 Dec 2017
3 answers
862 views

I am trying to export to excel using Kendo Grid with grouping enabled.  

When the data is exported without any grouping applied, the HTML encoding / decoding works as expected and the text is displayed correctly when I open up the spreadsheet in Excel. However when I group by a column whose value contains an apostrophe (or any character needing encoding), the grouped row is exported to excel without decoding the apostrophe which the users find unpleasant.

The grouping row is being auto-generated from Kendo MVC HTMLHelper for Grid and ​after reviewing the documentation regarding limitations around Kendo templates when exporting data to Excel.

What is the correct way to export a grid with grouping enabled -- in particular, how does one use Kendo Export To Excel functionality with grouping row values whose text contains characters ​​that must be HTML encoded? Is this functionality possible by default, or is custom code required to address this scenario when using ASP.NET MVC?

Tsvetina
Telerik team
 answered on 14 Dec 2017
Narrow your results
Selected tags
Tags
Grid
General Discussions
Scheduler
DropDownList
Chart
Editor
TreeView
DatePicker
ComboBox
Upload
MultiSelect
ListView
Window
TabStrip
Menu
Installer and VS Extensions
Spreadsheet
AutoComplete
TreeList
Gantt
PanelBar
NumericTextBox
Filter
ToolTip
Map
Diagram
Button
PivotGrid
Form
ListBox
Splitter
Application
FileManager
Sortable
Calendar
View
MaskedTextBox
PDFViewer
TextBox
Toolbar
Dialog
MultiColumnComboBox
DropDownTree
Checkbox
Slider
Switch
Notification
Accessibility
ListView (Mobile)
Pager
Security
ColorPicker
DateRangePicker
Wizard
Styling
Chat
DateInput
MediaPlayer
TileLayout
Drawer
SplitView
Template
Barcode
ButtonGroup (Mobile)
Drawer (Mobile)
ImageEditor
RadioGroup
Sparkline
Stepper
TabStrip (Mobile)
GridLayout
Badge
LinearGauge
ModalView
ResponsivePanel
TextArea
Breadcrumb
ExpansionPanel
Licensing
Rating
ScrollView
ButtonGroup
CheckBoxGroup
NavBar
ProgressBar
QRCode
RadioButton
Scroller
Timeline
TreeMap
TaskBoard
OrgChart
Captcha
ActionSheet
Signature
DateTimePicker
AppBar
BottomNavigation
Card
FloatingActionButton
Localization
MultiViewCalendar
PopOver (Mobile)
Ripple
ScrollView (Mobile)
Switch (Mobile)
PivotGridV2
FlatColorPicker
ColorPalette
DropDownButton
AIPrompt
PropertyGrid
ActionSheet (Mobile)
BulletGraph
Button (Mobile)
Collapsible
Loader
CircularGauge
SkeletonContainer
Popover
HeatMap
Avatar
ColorGradient
CircularProgressBar
SplitButton
StackLayout
TimeDurationPicker
Chip
ChipList
DockManager
ToggleButton
Sankey
OTPInput
ChartWizard
SpeechToTextButton
InlineAIPrompt
TimePicker
StockChart
RadialGauge
ContextMenu
ArcGauge
AICodingAssistant
SmartPasteButton
PromptBox
SegmentedControl
+? more
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?