私は自分のASP.NET MVC 3
Webアプリケーションでデータテーブルを使用していますが、これまでのところ非常にうまくいっています。データベースに接続しSQL Server 2008
、ストアドプロシージャを使用してデータを返します。IE8と最新バージョンのFirefoxを使用しています。のバージョンはYUI
です2.8.2r1
。データテーブルに関していくつか質問があります:)
これが私のデータテーブルのコードです:
<script type="text/javascript">
YAHOO.util.Event.onDOMReady(function () {
var grdNewsColumnDefs, grdNewsDataSource, grdNewsConfigs, grdNewsDataTable;
// News list data table
var formatActionLinks = function (oCell, oRecord, oColumn, oData) {
var newsId = oRecord.getData('NewsId');
oCell.innerHTML = '<a href="Edit/' + newsId + '">Edit</a> | ' +
'<a href="Details/' + newsId + '">Details</a>';
};
var formatActive = function (oCell, oRecord, oColumn, oData) {
if (oData) {
oCell.innerHTML = "Yes";
}
else {
oCell.innerHTML = "No";
}
};
grdNewsColumnDefs = [
{ key: 'Title', label: 'Title', className: 'align_left' },
{ key: 'Active', label: 'Active', className: 'align_left', formatter: formatActive },
{ key: 'Action', label: 'Actions', className: 'align_left', formatter: formatActionLinks }
];
grdNewsDataSource = YAHOO.util.DataSource('@Url.RouteUrl(Url.NewsJsonList())');
grdNewsDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
grdNewsDataSource.responseSchema = {
resultsList: 'DataResultSet',
fields: [
{ key: 'NewsId' },
{ key: 'Title' },
{ key: 'Active' },
{ key: 'Action' }
]
};
grdNewsConfigs = {
paginator: new YAHOO.widget.Paginator({
rowsPerPage: 20
})
};
grdNewsDataTable = new YAHOO.widget.DataTable('grdNews', grdNewsColumnDefs, grdNewsDataSource, grdNewsConfigs);
grdNewsDataTable.on('initEvent', function () {
YAHOO.util.Dom.setStyle(grdNewsDataTable.getTableEl(), 'width', '100%');
});
});
</script>
何が間違っているのかわかりませんが、データを返すアクションメソッドは次のとおりです。
public ActionResult JsonList()
{
JsonEncapsulatorDto<News> data = new JsonEncapsulatorDto<News>
{
DataResultSet = newsService.FindAll()
};
return Json(data, JsonRequestBehavior.AllowGet);
}
リターンJson...行にブレークポイントを設定して、このアクションメソッドがヒットするかどうかを確認します。ページが最初にブレークに移動したときにページが読み込まれるときに、F5キーを押すと、ページが実行され、グリッドが入力されたビューが表示されます。F5キーを押してブラウザを更新すると、ブレークポイントが再びヒットすることはありません。理由はわかりません。ここに再び入ることはありません。
データはどのようにグリッドにロードされますか?テーブルに100個のレコードがあり、rowsPerPageを20に設定した場合、5ページになります。上記の私のコードを考えると、データは一度にロードされますか?つまり、100行すべてが一度にロードされますか?一度にすべてをロードするのではなく、「チャンク」にロードすることをお勧めします。別の表には、はるかに多くのレコードがあります。これは、すべてを一度にロードするための賢明な設計アプローチではありません。このようなものをどのように実装しますか?
データテーブルの特定のテーブルヘッダーとセルのスタイルを設定しようとしています。データテーブルのスタイルを設定する方法を説明するこの記事を読みました:http://www.satyam.com.ar/yui/widgetstyles.html。tdを右揃えに設定すると、その列のthも右揃えになりますが、これはなぜですか?classNameプロパティをどのように設定したかを上で見ることができます。これが私のスタイルシートコードです:
.yui-skin-sam .yui-dt td.align_left{text-align:left}
上記のシナリオでは、列ヘッダーを左揃えにし、対応する列行を右揃えにしますか?私はおそらくこのようには使用しませんが、スタイルをさまざまな要素に設定する方法を知りたいだけですか?
データテーブルの幅を100%に設定しましたが、次のページにページを移動すると、この幅の100%が失われているように見えます。どうしてこれなの?幅を100%に保つために、データテーブルを作成するにはどうすればよいですか?
データを更新した場合、更新済みとして表示されません。これはなぜですか?また、更新されたデータをデータテーブルに表示するために何をする必要がありますか?