Hi,
I am working on Kendo Grid with MVC.Net. I am using CRUD operations with editor template. I am unable to get the model id value in editor template to figure out if it is a new record or existing record.
Here is my grid configuration which in cshtml file
@(Html.Kendo()
.Grid<TestRecord>()
.Name("Test")
.Columns(columns =>
{
columns.Bound(col => col.Id);
columns.Bound(col => col.Name);
columns.Command(command => { command.Edit(); command.Destroy(); });
})
.ToolBar(toolbar => toolbar.Create().Text("Add New Record"))
.Editable(editable => editable
.Mode(GridEditMode.PopUp)
.TemplateName("TestEditor"))
.Sortable()
.DataSource(dataSource =>
{
dataSource
.Ajax()
.ServerOperation(false)
.Model(m =>
{
m.Id(a => a.Id);
m.Field(a => a.Name)
})
.Read(read => read.Action("TestRead", "TestControl", new { id = this.Model.Id }))
.Create(create => create.Action("TestRead", "TestControl"))
;
})
)
My Editor is in separate file names TestEditor.cshtml. I am able to add/edit records without any issues. I need to update only one column if it is existing record. Hence I am hiding the remaining fields (other than the one I am updating) in the editor window. So I was wondering if I can use the model's Id column to figure out if it is a new record or not.
Here is my editor template : TestEditor.cshtml
@model TestRecord
// Render all the columns
@if (this.Model.Id > 0)
{
// only updated related column
}
Regards,
Chen
I have a chart, which allows the user to click on a column, to refresh the chart with data from the next level in the hierarchy.
It works well, apart from the rightmost columns, on narrower displays. In these cases, the tooltip completely obscures the column, making clicking on them difficult.
I've attached an example image.
The chart definition is:-
@(Html.Kendo().Chart<
Dashboard.Models.BarChartDataItem
>(Model)
.Name((string)ViewBag.ChartName)
.Title((string)ViewBag.ChartTitle)
.Theme("bootstrap")
.Legend(legend => legend
.Position(ChartLegendPosition.Top)
.Visible(false)
)
.Series(series =>
{
series.Column(model => model.BarValue).Name("Actual").Tooltip(t=>t.Visible(true).Template("<
div
>Category:#=dataItem.AxisDescription#</
br
>Contribution: £#=dataItem.DisplayBarValue#</
div
>"));
})
.ChartArea(area => area
.Height(350)
.Background("transparent")
)
.ValueAxis(axis => axis.Numeric()
.Labels(labels => labels.Format("{0:N0}"))
.Title((string)ViewBag.Yaxis)
.AxisCrossingValue(0, int.MinValue)
.Line(line => line.Visible(false))
)
.CategoryAxis(axis => axis
.Labels(false))
.CategoryAxis(axis => axis
.Categories(model => model.AxisValue)
.Labels(labels => labels.Rotation(-45).Padding(5))
.MajorGridLines(lines => lines.Visible(false))
.Title((string)ViewBag.Xaxis)
)
.Events(e=>e.SeriesClick("seriesClick"))
.Tooltip(tooltip => tooltip
.Visible(true)
.Format("{0:N2}")
)
)
Is it possible to change the tooltip position? There don't seem to be any position options available.
In this case, displaying at the top of the column would be best, ensuring nothing is obscured.
Thanks
Good afternoon.
Are there any example projects where the following is happening:
1. Initial Spreadsheet control is blank.
2. Upon selection of a an excel file .. loading it into the spreadsheet.
3. Spreadsheet is in read only format.
I have looked at the following demo...
http://demos.telerik.com/aspnet-mvc/spreadsheet/server-side-import-export
but it is preloading something that 1. I do not want, 2. i cannot even find the json file it is uploading.
I have tried to use the export function (to JSON) to export the initially loaded products json file and then reimport it using the code in the controller.... but it gives me serialization errors.
Thanks,
Corey
Hi Guys,
I have a grid that uses batch editing (GridEditMode.InCell).
This grid also uses a few Foreign Key columns.
If I use the .Navigatable() option, I can tab through the cells, but the foreign key columns don't show up as pick list anymore but as integer.
I believe the following example would have the same issue if it had a foreign key column.
http://demos.telerik.com/aspnet-mvc/grid/editing
is this a bug with MVC Grid or am I missing an option ?
Cheers,
Greg
For some time, I've noticed some severe rendering problems when using Kendo numeric/integer text box widgets. Here's the scenario:
Currently, I'm using the latest version of everything (Windows 10 with update 1511, VS 2015 Update 1, latest Kendo), although the problems I'm seeing date back to Window 8/8.1 and VS 2013.
I've got an MVC app using Bootstrap.
In the particular case that I'm working on right now, I've got a form inside a dialog box (Kendo Window widget) that uses a number of different Kendo widgets for input (TextBox, DropDownList, IntegerTextBox).
When I use the IntegerTextBox (or other numeric) widget, rendering consistently just goes all to hell in the dialog box. Spinners disappearing are the least of it. A lot of the time, all the other HTML elements in the dialog box are being overlaid by something. When I move the mouse over various controls, they sometimes appear and sometimes disappear. Clicking on one of the numeric text boxes tends to make everything else disappear. If I remove all numeric text box widgets from the form, the problems disappear completely. Removing the form itself has no impact. Removing validators has no impact.
This occurs in both IE and Edge browsers, but only on my desktop system, never on my laptop or my Surface Pro 3. My desktop system has a second generation i7-2600 with Intel HD Graphics 2000. My laptop has a fourth generation i7-4700HQ with Intel HD Graphics 4600. My Surface Pro 3 has a fourth generation i5-4300U with Intel HD Graphics 4400. I don't see these types of problems when I surf around the web, just in the apps I'm developing with Kendo.
I'm almost at the point of having to buy another desktop computer with a newer processor/graphics just so I can do my work. The problem with that, as my wife wisely points out, is that my customers may run into this problem with the deployed app. Judging by other forum threads, other developers are seeing similar things, but no one seems to have been able to come up with an example that you can duplicate. I suggest you get a system similar to my desktop machine and try it on that. I think the problem is related to the interaction between the Intel HD Graphics 2000, Windows 8x/10, and Kendo. Intel has essentially dropped support for their HD Graphics 2000/3000 for version of Windows greater than 7 although, obviously, Windows 8x/10 installs and seems to otherwise work on those systems.
Hi,
I am using Kendo.Mvc 2015.1.408.545
How can I use TypeScript / jQuery to set the values on a MultiSelect when Ajax and ServerFiltering are used as the DataSource? I know the value and text as they have been saved to the database previously. How can I set the values? This is before user has used the MultiSelect to retrieve data using server filtering.
@(form.FormGroup().CustomControls(
Html.Kendo().MultiSelectFor(x => x.PKeys)
.HtmlAttributes(new { tabindex = "5" })
.Deferred()
.Name("pMultiSelect")
.AutoBind(false)
.DataTextField("Name")
.DataValueField("PKey")
.Filter(FilterType.StartsWith)
.MinLength(2)
.Placeholder("[All]")
.DataSource(source =>
{
source.Read(read => read.Action("AjaxFilterSearch", "P")
.Data("pMultiSelectReadData"));
source.ServerFiltering(true);
})
).LabelFor(x => x.PKeys))
I have tried JSON, string arrays, strings, using the MultiSelect.value() will not display what is in "Name" field.
Thanks very much
I am looking at the Context Menu demo at http://demos.telerik.com/aspnet-mvc/menu/context-menu
There are several buttons that are part of the context menu such as Reply, Reply All, Forward, etc. However, they do not do anything so I do not see anything in the demo or anywhere else that demonstrates how you would wire this up to make a working application.
The first thing I am trying to figure out is if you wanted the reply button to work, how would you get the data from the row that the user is clicking on?
I tried something like this:
items.Add()
.Text("Reply")
.ImageUrl(Url.Content("~/content/web/toolbar/reply.png"))
.Items(children =>
{
children.Add().Text("Reply To Sender").ImageUrl(Url.Content("~/content/web/toolbar/reply.png")).Action("Reply", "WebMail", Model);
children.Add().Text("Reply To All").ImageUrl(Url.Content("~/content/web/toolbar/reply.png")).Action("ReplyAll", "WebMail", Model);
});
Of course it doesn't work because Model would refer to the page's model. How would I pass in data from the model that is applied on the row level?
The row level model for the demo is Kendo.Mvc.Examples.Models.WebMail. Can you pass in this model or data from this model into the action link so that when the user clicks reply you can get the data for the mail item they clicked on? Or if you accomplish this via javascript on the select event, is there an example somewhere of how that would be done?
Earlier today I ran into a problem with the application I'm working on and found the same behavior in the demo page for the splitter.
In a splitter with 2 panes, move the splitterbar between the two panes. Add a third pane to the right hand side and move the splitterbar between the second and third pane. Close the third pane and move the splitterbar between the first two panes again.
If you add a pane to the right hand side again, it will have a width of 0. The demopage will show a splitterbar on the right side, outside of the splitter-div, which allows you to adjust the width and make the thrid pane visible.
In my application, the splitter fills up the screen to the edge on the right side, so in my case, the splitbar will be invisible as well.
How can I fix this?
I am attempting to use model values to determine which controls should be visible or not when the popup opens.
When I attempt to access the values of the model in order to decide my course of action, the values are always the same, as if the model has not been instantiated with values.
How do I access those values from the popup??
Here is the code for the popup:
@model BlueWebApp.Models.Note
<
div
style
=
"height: 240px;"
>
<
div
class
=
"editor-label"
>
@Html.HiddenFor(model => model.NoteID)
</
div
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.NoteHeader)
</
div
>
<
div
class
=
"editor-field"
>
@Html.TextBoxFor(model => model.NoteHeader, new { style = "width: 80%" })
</
div
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.NoteText)
</
div
>
<
div
class
=
"editor-field"
>
@Html.TextAreaFor(model => model.NoteText, new { style = "height: 100px; width: 80%" })
</
div
>
<
div
class
=
"editor-field"
>
@Html.CheckBoxFor(model => model.NoteIsFile)
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.NoteFileGuid)
</
div
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.NoteFileName)
</
div
>
<
div
class
=
"editor-field"
>
@Html.TextBoxFor(model => model.NoteFileName, new { @readonly = "readonly" , style = "width: 80%" } )
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.NoteFileExtension)
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.GroupGuid)
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.ModelGuid)
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.CreatedDate)
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.UpdatedDate)
</
div
>
<
div
class
=
"editor-field"
>
@Html.HiddenFor(model => model.UpdatedUser)
</
div
>
</
div
>
<
div
>
@(Html.Kendo().Upload()
.Name("files")
.Events(events => events.Success(
@<
text
>
function(e)
{
if(e.operation == 'upload')
{
$('#NoteFileGuid').val(e.response.guid);
$('#NoteFileGuid').trigger('change');
$('#NoteFileExtension').val(e.response.extension);
$('#NoteFileExtension').trigger('change');
$('#NoteFileName').val(e.response.fileName);
$('#NoteFileName').trigger('change');
}
else if (e.operation == 'remove')
{
$('#NoteFileGuid').val('');
$('#NoteFileGuid').trigger('change');
$('#NoteFileExtension').val('');
$('#NoteFileExtension').trigger('change');
$('#NoteFileName').val('');
$('#NoteFileName').trigger('change');
}
}
</
text
>))
.Multiple(false)
.Async(a => a.Save("Save", "Note")
.Remove("Remove", "Note", new { guid = Model.NoteFileGuid, extension = Model.NoteFileExtension })
.AutoUpload(true)
)
)
</
div
>
<
br
/>
<
script
>
var model = @Html.Raw(Json.Encode(Model));
alert (model.NoteID); //Always 0
alert (model.NoteIsFile); // Always false
if(model.NoteIsFile)
{
$(".k-upload").show();
}
else
{
$(".k-upload").hide();
}
$("#NoteIsFile").change(function () {
if(this.checked) {
$(".k-upload").show();
} else {
$(".k-upload").hide();
}
});
</
script
>
Here is the Grid Model:
Model(m =>
{
m.Id(p => p.NoteID);
m.Field(p => p.NoteIsFile);
})
Hi,
I'm using a modified version of the custom confirmation window described here.
It works very well but sometimes I need to cancel dataSource.sync for certain grids (I'm using the ASP.NET MVC server wrapper).
I tried to use the RequestStart event of the DataSource and do a e.preventDefault() but this does not works and the request reaches the server code.
Can you help me, please?