我已经创建了一个DropDownList编辑器模板网格内联编辑成功。现在我想在多个列(相同的网格)和/或具有不同网格的不同视图中重用此模板。
到目前为止,我发现如果我省略了模板中dropdown列表的“名称”,那么模板会自动绑定到网格中引用它的那一列(使用)。EditorTemplateName(...)
)。然而,还有其他东西应该参数化(显式或隐式)首先是下拉数据源。
问:在一个网格中有许多下拉列表,如何参数化下拉列表数据源以防止复制和粘贴DropDownListTemplate.cshtmlzillon时间?
问:一般来说,当在多个列和多个视图中使用时,我如何参数此模板?
观点:
@(Html.Kendo().Grid<Enumeration>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(e => e.Locale).Width(200)
.EditorTemplateName("DropDownListTemplate");
// columns.Bound(e => e.OtherColumn).Width(200)
// .EditorTemplateName("DropDownListTemplate", ???);
...以及名为DropDownListTemplate的模板。cshtml并放置在/Views/Shared/EditorTemplates中
@model string
@(Html.Kendo()
.DropDownListFor(m => m)
.BindTo(ViewBag.LocaleDropDownListDataSource) // <- Having many dropdown in one grid, how to parameterize this, without copy and paste the DropDownListTemplate.cshtml zillon times?
//.OptionLabel("Select Locale")
.DataValueField("Locale")
.DataTextField("Value")
//.Name("Locale") // Omitting this binds the template automatically to the referring column in the grid. Using a custom .Name, what is not a column name in the grid ruins the working
)
迪翁的回答在外键(和类似)情况下确实是正确的,他解释了一个开箱即用的解决方案,所以我把它标记为答案。
尽管如此,如何参数化和编辑模板仍然是一个实际问题,需要回答。生成器中的EditorViewData()
命名非常自我解释。(嗯,在你找到它之后…:-)
观点:
@(Html.Kendo().Grid<Enumeration>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(e => e.AnyColumn).Width(200)
.EditorTemplateName("ReusableTemplate")
.EditorViewData(new {AnyParameterName = anyValue1, OtherParameterName = otherValue1});
columns.Bound(e => e.OtherColumn).Width(200)
.EditorTemplateName("ReusableTemplate")
.EditorViewData(new {AnyParameterName = anyValue2, OtherParameterName = otherValue2});
...这个模板叫做ReusableTemplate。cshtml并放置在/Views/Shared/EditorTemplates中
@model object
@{
// Access the actual parameter values anywhere including the kendo helpers below (if any) via ViewData:
var any = ViewData.AnyParameterName
var other = ViewData.OtherParameterName
}
@(Html.Kendo()
.AnyHelperYouWant_or_NoHelperAtAll
)
例如:
@(Html.Kendo().Grid<Enumeration>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(e => e.AnyColumn).Width(200)
.EditorTemplateName("ReusableTemplate")
.EditorViewData(new {Name = "list1");
columns.Bound(e => e.OtherColumn).Width(200)
.EditorTemplateName("ReusableTemplate")
.EditorViewData(new {Name = "list2"});
并使用它:
@model object
@{
// Access the actual parameter values:
// Note: You can inline this variable if you want
var name = ViewData.Name;
}
@(Html.Kendo().DropDownListFor(m => m).BindTo((SelectList)ViewData[name])
为什么你要重新发明轮子,剑道已经为我们提供了GridForeignKey列被使用无数次。
模板代码
@model object
@(Html.Kendo().DropDownListFor(m => m)
.BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)
网格中的实现
columns.ForeignKey(col => col.DepartmentId, (IEnumerable) ViewBag.Departments, "Value", "Text").Title("Department");
演示
我使用Telerik的演示页面上显示的编辑网格。编辑网格后,我希望网格刷新。编辑网格后,网格是否有调用的任何事件? 我试图使用数据绑定事件。在本例中,我读取数据源,但它告诉我刷新网格是一个无限循环。我试图使用saveChanges事件,但它不起作用。
嗨,我正在尝试做剑道网格,但它不工作,显示网格,但没有显示数据。我不知道怎么了。我不知道parametersMap是怎么工作的。请帮帮我。 控制器 这是剧本 Json数据返回:http://localhost:53232/Home/GetGeo?id=5
我想在我的剑道ui网格中进行内联编辑。数据绑定似乎工作正常,但当我在编辑某些内容后单击“更新”按钮时,范围会得到更新,但编辑对话框不会消失。如果单击另一个编辑按钮,它将进入失效状态。毕竟,只有当我至少提供一个伪函数作为k-save时,它才会更新作用域。出于某种原因,单击“取消”按钮确实会更新范围。所以“取消”按钮实现了我对“更新”按钮的期望。 您可能会看到,我想更新客户端的本地范围,而不是向任何服
我无法编辑剑道网格内联和弹出两者。单击“保存”按钮时,我的操作方法无法获取当前编辑单元格的值。 控制器代码: 在控制器中,我只得到空值。请帮帮我,我想使用剑道mvvm教学。
我的项目中有剑道网格 其中一个圆柱,例如Naam圆柱,看起来像这样 它所做的是在弹出窗口中打开一个剑道编辑器,其中包含产品的价值。纳姆 弹出窗口有剑道编辑器、OK和Cancel按钮 这是我的网格图像。带3个点的圆圈是打开剑道编辑器的按钮 这是我的剑道编辑器弹出窗口的图片,文本已经编辑过了 到现在为止,一直都还不错。我在编辑器中获得Naam值。 当我点击OK时,我会打电话给你 它还没有完成; 这就是
我在剑道网格上使用事件来显示几个隐藏的列。然后,我将在事件中再次隐藏它们。 我的问题是,似乎没有取消编辑模式的事件,所以如果用户单击取消,列会被搞砸。 是否有未记录的事件需要取消,还是需要找到解决方案?