1

截图样机: http ://tinypic.com/r/y2qex/5

问题:我有一个有 53 列的表;一年中的每周一个,加上一个带有用户名的。它将有 10 到 80 行,具体取决于每个区域的用户数量。

用户需要为每周设置一个“标志”,例如年假、培训等。

我目前有一个表格,每个单元格中都有一个选择框。问题是这适用于 5 行,但是一旦我开始获得 20 多行,浏览器就不会打开页面,因为选择框太多了。

无论选择什么新选择都必须能够被查询,所以我可以将它们保存在我的数据库中。

我所追求的是一些关于如何更好地解决这个问题的通用想法(即不是特定代码)。一旦我有了一个好主意,我就会着手制定确切的编码。

到目前为止我的想法: - 使所有单元格仅成为文本,使用当前选择,然后在每个用户旁边有一个“编辑”选项,它将他们的行作为一个可以编辑的模式窗口打开 - 使所有单元格都有一个“onClick”事件,导致在点击点生成一个下拉列表

但我很想听听其他人如何处理/解决这个问题?

4

4 回答 4

0

您可能想看看使用日历功能,我敢肯定那里有大量的 Javascript 日历。我最近使用 DataTables 也取得了很大的成功。您可以使用 DataTables + jEditable 创建单击以编辑表表示,单击时会为您提供一个选择框,否则仅显示文本。

于 2012-04-06T17:27:13.210 回答
0

如果许多选择框的选项相同,您可以考虑为所有选择框使用一个数据列表,这会更高效,我猜您每页可以有更多。不幸的是,这是一个 HTML 5 功能,因此它不会向后兼容所有浏览器。

http://www.w3schools.com/html5/tag_datalist.asp

除此之外,如果表格超过一定数量的列,您可以考虑对表格进行分页。或者像 tumbr 一样做,如果它们向右滚动得足够远,更多的列会通过 ajax 加载。你的想法也应该有效。

于 2012-04-06T17:30:38.743 回答
0

也许您可以在页面上有一个隐藏的选择框,并在单击时将其显示在单元格上,并通过将数据属性写入单元格来处理单击结果,也许还可以同时执行 XHR?

你也可以只拥有一堆隐藏的表单元素,但这太恶心了。

在实现方面,您可以使用附加到表的单个事件处理程序来完成,每个单元格都有代表名称和星期的数据属性。

无论如何,这应该是高性能的,即使它需要额外的 20 行左右的 js。

于 2012-04-06T17:44:33.957 回答
0

也许这样的事情对你有用:

var td=document.getElementsByTagName('td');
for(var i=0; i<td.length; i++)
{
    td[i].id='cellID_'+i; 
    td[i].onclick=function()
    {
        //make menu appear on this element id
    }
}
于 2012-04-06T18:48:26.403 回答