我有一个嵌套的剑道Grid
,其中包含一个TabStrip
控件,该控件又包含从初始kendoComboBox
元素生成的多个div
。
网格是在Javascript中生成的:
$("#configAddGrid").kendoGrid({
dataSource: gridConfigDataSourceAdd,
height: 550,
detailTemplate: kendo.template($("#templateAdd").html()),
detailInit: detailAddInit,
navigatable: true,
autoBind: false,
editable: {
mode: "incell"
},
toolbar: ["create"],
columns: columnSchemaAdd
});
kendo-template
定义如下。使用每行TabStrip
字段唯一标识ID
:
@(Html.Kendo().TabStrip()
.Name("tabStripAdd_#=ID#")
.SelectedIndex(0)
.Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))
.Items(items =>
{
items.Add().Text((string)ViewBag.ControlSetLots[0].LotNumber).Content(@<text>
<p>StandardComment: </p>
<div id='Lot1StandardCommentDropDownAdd_#=ID#' class='Lot1StandardCommentDropDownAdd'>
</div>
<p>Review Comment: </p>
<div id='Lot1ReviewCommentDropDownAdd_#=ID#' class='Lot1ReviewCommentDropDownAdd'>
</div>
</text>
);
}...
我的计划是通过ComboBox
函数初始化每个Kendo detailAddInit
,即一旦发送请求以扩展一行。 ComboBox
的创建将基于div
的唯一ID。
但是,使用检查器窗口(emptyID.png)检查时,分配给#=ID#
的{{1}}为空,即使它已附加到div
控件。
TabStrip
我是否可以将相同的ID附加到function detailAddInit(e) {
var closestCB = e.detailRow.find('.Lot1StandardCommentDropDownAdd');
createStandardCommentDropDown("#Lot1StandardCommentDropDownAdd");
createReviewCommentDropDown("#Lot1ReviewCommentDropDownAdd");
kendo.bind(e.detailRow, e.data);
}
的末尾以使其唯一?
此外,如果有人能想出更好的方法来达到相同的结果,请随时发表评论,因为我愿意接受建议。
答案 0 :(得分:2)
我找到了一个解决方案,以确保为每个ComboBox分配一个唯一的ID。
1)删除了ID
中分配的cshtml
:
@(Html.Kendo().TabStrip()
.Name("tabStripEdit_#=ID#")
.SelectedIndex(0)
.Animation(animation => animation.Open(open => open.Fade(FadeDirection.In)))
.Items(items =>
{
items.Add().Text((string)ViewBag.ControlSetLots[0].LotNumber).Content(@<text>
<p>Standard Comment: </p>
<div class='Lot1StandardCommentDropDownEdit'>
</div>
<p>Review Comment: </p>
<div class='Lot1ReviewCommentDropDownEdit'>
</div>
</text>
);
}
2)修改了detailAddInit(e)
函数,使用div
中请求嵌套detailTemplate
的当前时间来分配唯一的Grid
ID:
function detailAddInit(e) {
var time = new Date().getTime().toString();
// find combo box associated with current row
var closestSCCB = e.detailRow.find('.Lot1StandardCommentDropDownAdd');
// assign a unique ID to the div
var SCID = 'Lot1StandardCommentDropDownAdd_' + time;
closestSCCB.attr('id', SCID);
var closestSCCB2 = e.detailRow.find('.Lot1StandardCommentDropDownAdd');
var closestRCCB = e.detailRow.find('.Lot1ReviewCommentDropDownAdd');
var RCID = 'Lot1ReviewCommentDropDownAdd_' + time;
closestRCCB.attr('id', RCID);
var closestRCCB2 = e.detailRow.find('.Lot1ReviewCommentDropDownAdd');
createStandardCommentDropDown(closestSCCB2[0]);
createReviewCommentDropDown(closestRCCB2[0]);
}
虽然这是我的利基场景,但我希望这可以在将来的某些日子做到!