Jquery Dropdownlist未显示在kendo grid detailInit grid的所有行中

Jquery Dropdownlist未显示在kendo grid detailInit grid的所有行中,jquery,kendo-ui,kendo-grid,Jquery,Kendo Ui,Kendo Grid,在我的detailInit网格中向我的网格添加dropdownlist时,我遇到了一个问题。 当我选择一行时,dropdownlists在那里,但当我选择另一行时,dropdownlist不会出现 但是,如果我选择第3行,我会看到下拉列表,它们会出现在第2行和第1行,但不会出现在第4行 为什么会发生这种情况?我如何修复它,以便无论选择哪一行,所有行都将具有DropDownList var dropdownlata=[{ “CatalogID”:1, “名称版本”:“目录1” }, { “Cat

在我的detailInit网格中向我的网格添加dropdownlist时,我遇到了一个问题。 当我选择一行时,dropdownlists在那里,但当我选择另一行时,dropdownlist不会出现

但是,如果我选择第3行,我会看到下拉列表,它们会出现在第2行和第1行,但不会出现在第4行

为什么会发生这种情况?我如何修复它,以便无论选择哪一行,所有行都将具有DropDownList

var dropdownlata=[{
“CatalogID”:1,
“名称版本”:“目录1”
},
{
“CatalogID”:2,
“名称版本”:“目录2”
},
{
“CatalogID”:3,
“名称版本”:“目录3”
},
{
“CatalogID”:4,
“名称版本”:“目录4”
},
];
$(文档).ready(函数(){
//#区域数据
变量数据2=[{
“室友”:1,
“房间名称”:“房间1”,
“区域”:[{
“id”:1,
“区域名称”:“区域1”
}, {
“id”:10,
“区域名称”:“区域10”
}]
},
{
“室友”:2,
“房间名称”:“房间2”,
“区域”:[{
“id”:2,
“区域名称”:“区域2”
}, {
“id”:20,
“区域名称”:“区域20”
}]
},
{
“室友”:3,
“RoomName”:“房间3”,
“区域”:[{
“id”:3,
“区域名称”:“区域3”
}, {
“id”:30,
“区域名称”:“区域30”
}, {
“id”:35,
“区域名称”:“区域35”
}]
},
{
“室友”:4,
“RoomName”:“4号房间”,
“区域”:[{
“id”:4,
“区域名称”:“区域4”
}, {
“id”:40,
“区域名称”:“区域40”
}]
}
];
//#端区
ShowTabEditor(数据2);
});
函数ShowTabEditor(数据){
$(“#TabEditor”).kendoGrid({
数据源:{
数据:数据
},
模式:{
模特:“室友”,
字段:{
室友:{
可编辑:false,
隐藏:真的
},
房间名称:{
可编辑:false,
键入:“字符串”,
隐藏:假
},
面积计数:{
可编辑:false,
键入:“数字”,
隐藏:假
}
}
},
栏目:[{
字段:“室友”,
标题:“室友”,
隐藏:真的
},
{
字段:“RoomName”,
标题:“RoomName”,
隐藏:假
},
{
字段:“区域计数”,
标题:“区域计数”,
隐藏:假
}
],
可选:“行”,
//更改:onTabEditorRowSelect,
//detailTemplate:kendo.template($(“#TabAreaTemplate”).html(),
detailInit:TabEditorDetailInit,
detailExpand:函数(e){
this.select(e.detailRow.prev());
this.collapseRow(this.tbody.find('>tr.k-master-row')。而不是(e.masterRow));
}
}).数据(“kendoGrid”);
}
函数选项卡EditorDetailIt(e){
//var masterRow=e.masterRow;
//var roomID=e.data.roomID;
$(“”).appendTo(e.detailCell).kendoGrid({
可滚动:对,
可排序:是的,
可选:“行”,
可过滤:false,
工具栏:kendo.template($(“#EditAreaGridToolbarTemplate”).html(),
栏目:[{
标题:“身份证”,
字段:“id”,
隐藏:真的
}, {
字段:“区域名称”,
标题:“区域名称”,
宽度:“20px”,
模板:“#=区域名称”
}, {
标题:“目录”,
字段:“目录”,
模板:“”,
宽度:“40px”,
可编辑:false
}],
可编辑:{
模式:“incell”,
确认:错误
},
数据源:{
数据:例如数据区域,
模式:{
型号:{
字段:{
身份证:{
可为空:真
},
域名:{
可为空:是的,
可编辑:真
},
目录:{
可编辑:false
}
}
}
}
},
数据绑定:函数(e){
abindCatalogDropDownInCellProcess();
}
});
}
函数abindCatalogDropDownInCellProcess(){
$(“#EditAreaGrid”).data(“kendoGrid”).tbody.find(“td输入.编辑区域目录下拉列表”).each(函数(){
$(此).kendoDropDownList({
dataTextField:“名称版本”,
dataValueField:“CatalogID”,
选项标签:“选择目录…”,
数据源:{
运输:{
阅读:功能(选项){
如果(dropdownData.length>0){
选项。成功(下拉数据);
回来
}
选项。成功(下拉数据);
}
}
},
选择:功能(e){
var grid=$(“#EditAreaGrid”).data(“kendoGrid”);
var dataItem=grid.dataItem(grid.select());
var drpDataItem=此.dataItem(e.item);
}
});
});
}

您有几个具有相同ID的DOM元素,对于每个使用相同ID创建网格的细节单元,因此在数据绑定事件中,您无法控制选择哪个网格

我认为,您应该将detailCell作为参数传递给'abindCatalogDropDownInCellProcess'函数,以查找相应的输入,如下所示:

dataBound: function(w) {
      abindCatalogDropDownInCellProcess(e.detailCell);
    }
...

function abindCatalogDropDownInCellProcess(cell) {
  cell.find("td input.edit-area-catalog-dropdown").each(function(){})
}

工作。

太棒了,我知道你在说什么。感谢您发现问题并解释