我在editKendo网格上使用该事件来显示几个隐藏的列.然后我会在save活动中再次隐藏它们.
我遇到的问题是,似乎没有取消编辑模式的事件,因此如果用户单击取消,则列会搞砸.
是否有未记录的取消事件或我是否需要找到解决方法?
我刚刚将基于Bootstrap 2.3的站点转换为3.1,而且我对Kendo的Bootstrap主题有很多问题.
我倾向于在自定义网格弹出编辑器中使用Bootstrap表单组,但它们与Kendo的CSS不兼容.
我设置了一个小提琴来显示问题.正如您在编辑记录时所看到的那样,标签的大小和位置以及输入和输出方式.
这与common-template.less文件中的最后两个条目有关:
.k-animation-container,
.k-widget,
.k-widget *,
.k-animation-container *,
.k-widget *:before,
.k-animation-container *:after
{
.box-sizing(content-box);
}
.k-button,
.k-textbox,
.k-autocomplete,
div.k-window-content,
.k-tabstrip > .k-content > .km-scroll-container,
.k-block,
.k-edit-cell .k-widget,
.k-grid-edit-row .k-widget,
.k-grid-edit-row .text-box,
.km-actionsheet > li,
.km-shim
{
.box-sizing(border-box);
}
Run Code Online (Sandbox Code Playgroud)
如果删除这些Bootstrap表单看起来是正确的,但某些Kendo元素(如寻呼机)会受到不利影响.
有没有办法解决这个问题,或者这不是Telerik打算如何使用它的框架?
我有一些链接到远程数据的Kendo AutoComplete字段(数百种可能性,因此DropDownList不是一个选项).
如何强制用户从显示的列表中进行选择?
我还要检索从数据源返回的其他数据,例如
$("#station").kendoAutoComplete({
dataSource: stationData,
minLength: 2,
dataTextField: 'name',
select: function(e){
var dataItem = this.dataItem(e.item.index());
console.dir(dataItem);
}
});
Run Code Online (Sandbox Code Playgroud)
我正在做其他数据dataItem,它需要是一个有效的选择.
谢谢
解决:我想我可能过于复杂了.答案很简单,发布在下面.
我使用Kendo Web GPL版本2013.3.1119设置了一个Kendo Scheduler小部件.
它通常工作正常,因为事件是从远程SchedulerDataSource中提取的,并且正确地显示在日历上及其相关资源.
问题是......当我双击一个事件时,弹出的编辑器显示包含正确的数据,但是如果我单击取消或关闭'X',则事件将从日历中删除.
没有错误,事件就消失了.
可能导致这种情况的任何想法?
所以标题几乎说明了一切.我正在尝试将新的MultiSelect小部件合并到Grid的自定义弹出编辑器模板中.
我正在使用数据属性初始化方法并从远程dataSource读取下拉选项.这一切都正常,但我无法将所选项的值放入模型中.
保存行时,会向服务器发送一个数据数组,表示在MultiSelect中选择的第一个数据项,而不是以逗号分隔的所选值列表.
我有什么想法可以将MultiSelect值(所选值的列表/数组)放入网格模型中?
谢谢
编辑:我现在使用了一种解决方法,但我很想知道是否有一种"正确的方法"将MultiSelects与网格结合使用.
解决方法是在Grid的配置中添加类似的内容:
save: function(e) {
e.model.items = $('#select_items').data("kendoMultiSelect").value();
}
Run Code Online (Sandbox Code Playgroud)
这是弹出编辑器模板的相关部分:
<input name="select_items" id="select_items" data-value-field="id"
data-text-field="description" data-source="itemsDataSource"
data-role="multiselect" data-auto-bind="false" data-item-template="itemList">
Run Code Online (Sandbox Code Playgroud)
我没有进入select_items模型定义:我正在使用上面的解决方法来复制模型中MultiSelect的值items.这似乎有效,我只是不知道为什么有必要.
我已经设置了一个基本的Kendo Grid,我正在使用服务器端的PHP Wrapper库中的DataSourceResult类.
我遇到了一个奇怪的问题...如果我create是一个新记录然后编辑它(没有刷新页面),create则再次调用该操作,而不是update操作.
如果在添加新记录后刷新页面,则update在更改记录后将正确调用该操作.
我可以确认DataSourceResult类在create操作后返回正确的数据,包括id新记录.
任何想法为什么会发生这种情况(以及如何阻止它)?谢谢
更新:这是数据源代码.网址中的查询字符串只是为了轻松区分Chrome控制台中的请求.每个请求传递的附加数据用于ajax.php区分请求的不同操作.
data = new kendo.data.DataSource({
transport: {
create: {
url: '/ajax.php?r=gridCreate',
dataType: 'json',
type: 'post',
data: { request: 'grid', type: 'create' }
},
read: {
url: '/ajax.php?request=gridRead',
dataType: 'json',
type: 'post',
data: { request: 'grid', type: 'read' }
},
update: {
url: '/ajax.php?r=gridUpdate',
dataType: 'json',
type: 'post',
data: { request: 'grid', type: 'update' }
},
destroy: {
url: '/ajax.php?r=gridDestroy', …Run Code Online (Sandbox Code Playgroud) 我正在重新审视我在Kendo论坛上提出的一个问题(现在只读).这是原始主题.
Jon提出的解决方案建议:
如果您从span中取出验证消息,它将显示(使用jQuery将其附加到父元素).
我已经验证了工作 - 我只是无法显示验证消息(至少在可见的地方).我不知道该追加什么.
任何建议都非常感谢.
我正在尝试在Kendo Grid中使用某些Bootstrap元素,例如Bootstrap下拉按钮和工具提示.
问题是下拉列表或工具提示始终位于下方或上方的行下方.我已经尝试调整显示元素的z-index,但这并没有解决它.
有没有人设法找到解决方案?
我创建了一个绑定到远程数据源的Kendo Scheduler.远程数据源实际上是两个独立数据源的组合.这部分工作正常.
问题是......有什么方法可以防止某些事件被破坏?
我已经通过检查事件的属性,某一领域,并呼吁停止其他形式的编辑e.preventDefault()上edit,moveStart和resizeStart事件,如果它应该是只读的.这工作正常,但我无法阻止删除.
任何建议都非常感谢.
我要为Kendo Grid创建一个自定义的"更新"按钮.
基本上,它以编程方式将适当的行放入编辑模式(使用editRow),将某些字段更新为特定值(使用model.set),然后保存行(使用saveRow).
它正在工作,但是一旦editRow调用该方法就会显示弹出编辑窗口,这会减慢进程并且看起来不太好.
有没有办法在以编程方式修改数据时抑制弹出窗口?这就是我正在做的事情(可能有另一种/更好的方法来做到这一点):
columns: [
....
{ command: [{name: 'edit' }, {name: 'approval'}, {name: 'delrow'}] }
],
dataBound: function() {
grid.find('.k-grid-approval').click(function() {
var row = $(this).parents('tr:first');
var g = requisitions.data('kendoGrid');
var data = g.dataItem(row[0]);
var model = g.dataSource.getByUid(data.uid);
g.editRow(row[0]);
model.set('status', 'Pending');
model.set('date_submitted', moment().toDate());
g.saveRow();
});
Run Code Online (Sandbox Code Playgroud)
我怀疑有更好的方法可以做到这一点,但我不知道它是什么.任何建议都非常感谢.
我有一个使用自定义弹出编辑器的Kendo Grid.其中一个字段是使用远程数据源的Kendo下拉列表.
当用户进行选择时,使用与所选项目相关联的数据来更新弹出编辑器中的几个其他字段model.set.
这很有效:模型和字段都会更新.
但是,如果我然后添加required validationMessage="This field is required"到正在更新的字段,model.set则会触发验证错误,并且不会更新字段.
我已经设置了一个JSFiddle来演示这个问题.在这种情况下,可以通过单击Set Product按钮来设置自定义弹出编辑器中的ProductName .您会注意到触发了验证错误,但如果required从字段中删除该属性,则会正确更新.
这是一个错误吗?为什么在设置值时会触发验证错误?
编辑:只是为了澄清 - 这是在添加新记录时,而不是编辑现有记录.
我猜想随着剑道论坛工作方式的即将发生的变化(只有付费用户),在那里得到问题答案的可能性很小,所以我会在这里尝试......
我已经设置了一个可编辑的网格,它使用两个数字字段的自定义验证器.验证器使用ajax查询获取有效参数(但我认为这不重要).
这一切都有效,但我需要NumericTextBoxes支持4个小数位,默认情况下它们不支持.
我为这些字段创建了自定义网格编辑器,这允许我输入4个小数位,但它会破坏自定义验证.
如何在编辑模式下使NumericTextBox支持4个小数位并允许自定义验证规则?
提前致谢
这是字段定义,我正在使用验证器:
end: { type: 'number', validation: {
end: function(input){
if (input.attr('name')=='end' && $('input[name=lookup]').val()!=''){
$.ajax({
type: 'post',
url: '/ajax/lookupParams',
data: { lookup:$('input[name=lookup]').val(), csrf_token: token },
success: function(data) {
start = data.start;
end = data.end
},
dataType: 'json',
async: false
});
input.attr('data-end-msg', 'End must be between '+start+' and '+end);
return (input.val() >= start && input.val() <= end);
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
此位有效--ajax用于根据查找字段的当前值检索有效的开始值和结束值.如果我使用自定义编辑器支持4位小数,它就会停止工作.
我想我错过了一些简单的东西,但我找不到任何显示如何做到这一点的例子...另外,如果我使用的一些术语是错误的,请原谅我.
我只想使用绑定到Kendo Observable对象的HTML表单在我的远程数据源中创建一个新记录.
我见过的所有例子都显示了如何编辑现有记录,但这不是我想要的(至少目前不是这样).
我创建了一个小提琴http://jsfiddle.net/matbeard/fYfYz/2/,其中包含了迄今为止我所获得的简单截断版本.显然它不会实际保存记录,因为创建URL不指向任何地方,但我相信我可以处理它.
有人可以指点我正确的方向吗?谢谢.
因为没有它我就不能发一个问题,这里有一些从小提琴复制的代码:
var model = kendo.data.Model.define({
id: "id",
fields: {
id: { type: 'number' },
field1: { type: 'string' },
field2: { type: 'string' },
field3: { type: 'string' }
}
});
var viewModel = kendo.observable({
dataSource: new kendo.data.DataSource({
type: 'json',
transport: {
create: {
url: '/myurl/create',
dataType: 'json',
type: 'post'
}
},
schema: {
data: 'data',
model: model
}
});
});
kendo.bind($("#my-form"), viewModel);
Run Code Online (Sandbox Code Playgroud)