【发布时间】:2014-10-05 21:59:25
【问题描述】:
我一直在开发一个 ASP.NET MVC4 Web 应用程序,我试图在用户端保留一些选定/取消选定项目的持久数据。
基本上,我有一个 HTML 表格,我已将其转换为 Kendo Grid。表/网格已通过访问后端的 Oracle 和 SQL 服务器并将模型强输入到视图中来填充,以便通过该模型创建和填充表。我正在尝试根据是否选中复选框来更新在我的 ViewModel 中找到的 ObservableArray,但我已经旋转了很长一段时间。以下是我实施的基本框架。任何帮助将不胜感激。
HTML 表格:
<table id="grid" border="1">
<thead id="tableHead">
<tr align="center">
<th data-field="select" id="selectChkBox"> Select</th>
<th data-field="model">Model</th>
<th data-field="division">Division</th>
</tr>
</thead>
<tbody id="tableBody" class="hoverTable">
@foreach (var config in Model.Models)
{
<tr align="right" id="entries">
<td><input type="checkbox" class="chkBox" data-bind="checked: addModel" id="checkbox" value="@config.ModelName"/></td>
<td>@config.ModelName</td>
<td>@config.Division</td>
</tr>
}
</tbody>
</table>
JavaScript/Knockout ViewModel:
function PRPSSelectViewModel() {
// Data
var self = this;
self.AvailableModels = ko.observableArray([]);
self.ModelNames = ko.observableArray([]);
// Operations
self.addModel = function (name) {
self.ModelNames.push(name);
};
self.removeModel = function (name) {
self.ModelNames.remove(name);
};
}
我确信已经记录了这个问题的许多变体,但是我对 Knockout 非常陌生,尽管提供了大量可用的资源和示例,但我无法实现我想要的功能。
编辑 用一个简单的方法解决。我刚刚在我的 Javascript 文件中实例化了一个数组,我用它来填充模型的名称。当一个复选框被标记为在剑道网格上“选择”它时,我已经有一些 Javascript 设置要触发,并且只需抓住适当的行,我就可以用模型名称填充数组。只要页面不刷新(也不应该刷新,因为我正在通过 CRUD 操作使用模态和部分视图),我应该没问题。
【问题讨论】:
标签: c# javascript asp.net-mvc asp.net-mvc-4 knockout.js