.netMVC構造は初めてです。Idを渡す部分ビュー(従来のasp.netのユーザーコントロールなど)を作成しようとしていますが、値に基づいてjqgridが表示されます。
部分ビューでタグを追加して、jqeryを使用してJqgridをロードし、コントローラーのメソッドを呼び出すと、機能します。しかし、そのコードを.jsファイルに移動すると、jqgridがロードされません。
インデックスビュー
@model Compass.Models.Sales
@{
ViewBag.Title = "Lead Details";
}
@section Css {
@Content.Css("themes/base/jquery-ui.css", Url)
@Content.Css("jquery.jqGrid/ui.jqgrid.css", Url)
}
@section JavaScript {
@Content.Script("jquery-ui.multiselect.js", Url)
@Content.Script("jquery.tmpl.min.js", Url)
@Content.Script("i18n/grid.locale-en.js", Url)
@Content.Script("jquery.jqGrid.min.js", Url)
}
<div><h3>Lead Details # @ViewBag.LeadID</h3></div>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true, "Please correct error/s and try again.");
<div>
<table>
<tr>
<td>@Html.LabelFor(m=>m.OwnerID,"Owner:") </td> <td>@Model.OwnerID</td>
</tr>
<tr>
<td>@Html.LabelFor(m=>m.StatusID, "Status:") </td> <td>@Model.StatusID</td><td>@Html.LabelFor(m=>m.RatingID, "Rating:") </td> <td>@Model.RatingID</td>
</tr>
</table>
</div>
<p></p>
@Html.Partial("_Notes", Model)
}
部分ビュー(_Notes.cshtml)
@Html.RequireScript("/Scripts/NotesView.js")
<h4>
Notes for Lead # @Model.ID</h4>
<div style="width: 90%">
<table id="jqgNotes" style="width: 100%">
</table>
<div id="jqgpNotes" style="text-align: center; width: 100%">
</div>
</div>
<div id="editNote">
</div>
NotesView.js:JqgNotesテーブル要素にjQgridをロードします。
$(document).ready(function () {
alert('testing');
$('#jqgNotes').jqGrid({
//url from wich data should be requested
url: '@Url.Action("getNotes")',
//type of data
datatype: 'json',
//url access method type
mtype: 'POST',
postData: {
UnitID: '@Model.ID'
},
//columns names
colNames: ['Title', 'Last Modified', 'Last Modified By', 'Edit'],
//columns model
colModel: [
{ name: 'Title', index: 'Title', align: 'left', search: true, stype: 'text', editable: true, edittype: 'text' },
{ name: 'UpdatedDate', index: 'UpdatedDate', align: 'left', formatter: 'date', formatoptions: { srcformat: 'm/d/Y h:i:s', newformat: 'm/d/Y h:i:s' }, sorttype: "date", datefmt: "m/d/Y h:i:s", search: true },
{ name: 'UpdatedBy', index: 'UpdatedBy', align: 'left', search: true },
{ name: 'Edit', index: 'Edit', align: 'center', formatter: supplierFormatter, unformat: supplierUnFormatter, editable: false },
],
//pager for grid
pager: $('#jqgpNotes'),
//number of rows per page
rowNum: 10,
//initial sorting column
sortname: 'UpdatedDate',
//initial sorting direction
sortorder: 'desc',
//we want to display total records count
viewrecords: true,
//grid height
height: '100%',
autowidth: true
});
function supplierFormatter(cellvalue, options, rowObject) {
return "<a href='#' data-edit-id='" + options.rowId + "'>Edit</a> <a href='#' data-delete-id='" + options.rowId + "'>Remove</a>";
};
function supplierUnFormatter(cellvalue, options, cellobject) {
return cellvalue;
};
$('#jqgNotes').jqGrid('navGrid', '#jqgpNotes',
{ editfunc: function (rowid) {
editNoteFunc(rowid);
return false;
}
},
{}, // Edit Option
{}, // add option
{}, // delete option
{} // search option
);
タグページが正常に読み込まれるため、_notes.chtmlに.jsコードがある場合。コントローラの「getNotes」メソッドを実行しますが、このJavaScriptコードを.jsファイルに移動してロードすると、アラートが表示されますが、コントローラの「getNotes」メソッドは実行されません。そのメソッドにブレークポイントを設定しましたが、到達することはありません。
助けていただければ幸いです。私のアプローチが正しくないか、私がしていることが正しくないことがあります。基本的に、(jqueryを使用して)独自にデータを取得できる部分ビューを作成したいので、このビューを他のページに接続します。