我正在将数据表与我的ASP.NET MVC 3
Web 应用程序一起使用,到目前为止一切顺利。我连接到SQL Server 2008
数据库,并使用存储过程返回数据。我正在使用 IE 8 和最新版本的 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);
}
我在 return 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% 的宽度?
如果我要更新数据,那么它不会显示为已更新。为什么会这样?我需要做什么才能让更新的数据显示在数据表中?