我遇到了一些kendo对象,特别是按钮,下拉列表和文本框。我的情况是这样的:我有一个局部视图,加载一个部件列表和一个项目列表。每个项目都是列表,其中包含一个链接,该链接打开一个kendo窗口,用于加载有关零件或项目的信息的部分视图。所有部件共享一个窗口,但信息会根据部件进行更新,并且所有项目共享一个窗口,其中所有信息都根据项目进行更新。该窗口在包含零件列表的局部视图上实例化,但在单击零件/项目之前不可见。然后将数据从单独的局部视图加载到窗口上,然后打开窗口。每个窗口都包含kendo按钮,kendo文本框和kendo下拉列表。
首次加载时,项目和部分链接都能正常工作。它们将继续工作,直到用户打开其他类型的链接(部分或项目)。两个窗口然后停止运作。窗口打开,但所有kendo对象都失去了功能。例如,下拉列表变为文本框,按钮呈现平坦的蓝色外观,并且表单从CSS中丢失其样式。我在这个项目中成功地使用了kendo对象很多次,所以我知道这个视图的东西。我检查了窗口的名称和ID以及窗口中的所有对象,没有共享。我也更改了部分视图中的javascript函数的名称(我知道这是不好的做法,但我从来没有想出正确的方法)彼此不同。问题依然存在。
我没有足够的声誉来发布图片,并且大多数图片托管网站在工作时被屏蔽,因此我无法发布任何视觉帮助。
以下是其中一个窗口的代码。
<div style="width:100%;text-align:center;">
<div style="display:inline-block; vertical-align:central">
<table>
<tr>
<td>
@Html.Kendo.Button.Name("test1").Content("Add Costs").Events(Sub(events) events.Click("enterActualInfo"))
</td>
<td>
@Html.Kendo.Button.Name("test2").Content("View Change History").Events(Sub(events) events.Click("showProjectHistory"))
</td>
<td>
@Html.Kendo.Button.Name("test3").Content("GPC/Target").Events(Sub(events) events.Click("addGPC"))
</td>
</tr>
</table>
</div>
</div>
这是打开窗口的代码
function sendProjInfo(projNum) {
var projectWindow = $("#custProjWindow").data("kendoWindow")
$.ajax({
type: "GET",
url: "@Url.Action("getCustProjInfo", "Home")",
data: { custProjNumber: projNum },
datatype: "html",
success: function (result) {
projectWindow.content(result).open()
}
})
}
//when a part number is clicked, open a new window that has thats part information
function sendPartInfo(partNumber) {
var partWindow = $("#partWindow").data("kendoWindow")
$.ajax({
type:"GET",
url: "@Url.Action("getPartInfo", "Home")",
data: {partNumber: partNumber},
datatype: "html",
success: function (result) {
partWindow.content(result).open();
}
})
}
这是windows的实例化。
@Html.Kendo.Window.Name("custProjWindow").Title("Edit Customer Project").Draggable.Resizable.Actions(Sub(actions) actions.Minimize.Maximize.Close()).Visible(False)
@Html.Kendo.Window.Name("partWindow").Title("Edit Part").Draggable.Resizable.Actions(Sub(actions) actions.Minimize.Maximize.Close()).Visible(False)
非常感谢任何建议。如果有助于解决问题,我很乐意发布更多信息。提前谢谢。
-Eric
答案 0 :(得分:1)
在发布此问题之前,我花了很多时间研究这个问题。在发布问题后几分钟,我修复了它。
对于遇到此问题的其他人或类似问题:
祝所有有类似问题的人好运。
答案 1 :(得分:1)
嗯,很容易确定原因:双重身份证。当你打开第一个没有问题,因为按钮是#test1,#test2和#test3,但是当你加载另一个时,那些id会被重复到同一页面
您应该更改部分视图,以便按钮的名称是动态且唯一的:
来自:
@Html.Kendo.Button.Name("test1").Content("Add Costs").Events(Sub(events) events.Click("enterActualInfo"))
要:
@Html.Kendo.Button.Name("test1_" + ViewBag.someId).Content("Add Costs").Events(Sub(events) events.Click("enterActualInfo"))
在你的控制器中,你有一个返回你的partialView的动作,对吧?在那里,您必须传递唯一ID,以区分每个部分与其他部分。
public PartialViewResult _YourPartialView()
{
ViewBag.someId = variableName; // this should be something like a model Id or something.
return PartialView();
}
您可以在控制器中使用变量,或者在单击加载部分视图的链接时通过javascript发送内容。