次の質問で述べたように、ID を View から ViewModel に GET 関数のパラメーターとして渡すにはどうすればよいですか? MVC4、knockoutJS、Web API、Bootstrap、MSSQL Server 2012 などを使用して、MVC アプリケーションを開発しています。テーブルを作成し、ノックアウトJSを使用してDBからのデータにバインドするために、DataTables jQueryライブラリを使用しています。次の 2 つの問題が発生しています。テーブルを data-bind="foreach: regionsListModel.regions" でバインドすると、テーブルにデータが入力されますが、その最後に「テーブルにデータがありません」という行が追加されます。テーブルのフッターには、「0 件の結果のうち 0 件から 0 件を表示しています」と表示され、ページネーションはなく、結果をフィルタリングしようとすると、テーブルが完全に空になります。ヘッダーを使用して列を並べ替えると、同じことが起こります。
コードスニペットをもう一度投稿します。
ビューモデル:
var regionsModel = {
regionId: ko.observable(),
companyId: ko.observable(),
name: ko.observable(),
companyName: ko.observable()
};
var regionsListModel = {
regions: ko.observable()
};
function getRegions() {
get(apiUrl + "Regions/GetRegions", {}, function (data) {
regionsListModel.regions(data);
});
}
function getRegion() {
get(apiUrl + "Regions/GetRegion", { aiId: regionsModel.regionId() }, function (data) {
regionsModel.regionId(data.RegionID);
regionsModel.companyName(data.CompanyName);
regionsModel.companyId(data.CompanyID);
regionsModel.name(data.Name);
});
}
function viewRegion() {
$("#ViewRegionModal").modal('show');
//regionsModel.regionId($('#ViewRegion').val());
getRegion();
return false;
}
ビューのコード:
<table class="table table-striped table-bordered responsive" id="dtable">
<thead>
<tr>
<th style="width: 20px;">ID</th>
<th>Region Name</th>
<th>Company Name</th>
</tr>
</thead>
<tbody data-bind="foreach: regionsListModel.regions">
<tr id="ViewRegion" data-toggle="modal" data-bind="click: viewRegion, value: RegionID">
<td data-bind="text: RegionID"></td>
<td data-bind="text: Name"></td>
<td data-bind="text: CompanyName"></td>
</tr>
</tbody>
</table>
問題の写真: http://i.imgur.com/CNRnRlW.png
どんな助けでも大歓迎です!
編集: getRegions を呼び出すコードを追加します (これは Regions.js ファイルにあり、ViewModel は RegionsData.js に配置され、両方ともページの読み込み時に読み込まれます)。
$(function () {
ko.applyBindings(regionsModel);
getRegions();
getCompanies();
$("#NewRegionButton").click(function () {
$("#NewRegionModal").modal('show');
return false;
});
$("#ViewRegion").click(function () {
$("#ViewRegionModal").modal('show');
return false;
});
$("#NewRegionModalClose").click(function () {
clearFields();
$("#NewRegionModal").modal('hide');
return false;
});
$("#NewRegionSave").click(function () {
newRegion();
$("#NewRegionModal").modal('hide');
return false;
});
$("#ViewRegionClose").click(function () {
$("#ViewRegionModal").modal('hide');
return false;
});
$("#ViewRegionEdit").click(function () {
$("#ViewRegionModal").modal('hide');
$("#EditRegionModal").modal('show');
return false;
});
$("#RegionUpdateSave").click(function () {
updateRegion();
$("#EditRegionModal").modal('hide');
return false;
});
$("#ViewRegionEditClose").click(function () {
clearFields();
$("#EditRegionModal").modal('hide');
return false;
});
})