我有一个如下所示的表,我正在尝试创建一个固定的标题,这样无论我向下滚动多少,标题始终对用户可见。我没有多少网页设计经验,所以想知道如何使用css / javascript做到这一点?我猜测的是,我首先需要在<thead>
标记周围添加<th>
标记,以使其成为一个实体?虽然这必须使用javascript完成,因为html是使用我无法编辑的外部宏生成的。非常感谢任何帮助!
<table id="TBL1399802283490" class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh" style="cursor: pointer;">Server Name </th>
<th class="confluenceTh" title="null" style="cursor: pointer;">Network Zone </th>
<th class="confluenceTh" title="null" style="cursor: pointer;">Operational Status </th>
</tr>
<td class="confluenceTd"><div style="left:1em;right:1em"> w264521f </div> </td>
<td class="confluenceTd"><div style="left:1em;right:1em"> GREEN </div> </td>
<td class="confluenceTd"><div style="left:1em;right:1em"> READY </div> </td>
<tr>
</tr>
</tbody>
</table>
请注意,列不是固定宽度。它们需要是可变的,因为数据不是恒定的。
答案 0 :(得分:0)
对于jquery中带有固定标头的gridview,请使用以下链接
[http://gridviewscroll.aspcity.idv.tw/Demo/Advanced.aspx#HeaderColumnMerge][1]
或者对于javascript,请参阅以下代码,
function CreateGridHeader()
{
var DataDivObj = document.getElementById('<%=divmain.ClientID%>');
var DataGridObj = document.getElementById('<%=gridview.ClientID%>');
var HeaderDivObj = document.getElementById('<%=HeaderDiv.ClientID%>');
//********* Creating new table which contains the header row ***********
var HeadertableObj = HeaderDivObj.appendChild(document.createElement('table'));
DataDivObj.style.paddingTop = '0px';
var DataDivWidth = DataDivObj.clientWidth;
DataDivObj.style.width = '5000px';
//********** Setting the style of Header Div as per the Data Div ************
HeaderDivObj.className = DataDivObj.className;
HeaderDivObj.style.cssText = DataDivObj.style.cssText;
//**** Making the Header Div scrollable. *****
HeaderDivObj.style.overflow = 'auto';
//*** Hiding the horizontal scroll bar of Header Div ****
//*** this is because we have to scroll the Div along with the DataDiv.
HeaderDivObj.style.overflowX = 'hidden';
//**** Hiding the vertical scroll bar of Header Div ****
HeaderDivObj.style.overflowY = 'hidden';
HeaderDivObj.style.height = '21px';
//**** Removing any border between Header Div and Data Div ****
HeaderDivObj.style.borderBottomWidth = '0px';
//********** Setting the style of Header Table as per the GridView ************
HeadertableObj.className = DataGridObj.className;
//**** Setting the Headertable css text as per the GridView css text
HeadertableObj.style.cssText = DataGridObj.style.cssText;
HeadertableObj.border = '1px';
HeadertableObj.rules = 'all';
HeadertableObj.cellPadding = DataGridObj.cellPadding;
HeadertableObj.cellSpacing = DataGridObj.cellSpacing;
//********** Creating the new header row **********
var Row = HeadertableObj.insertRow(0);
Row.className = DataGridObj.rows[0].className;
Row.style.cssText = DataGridObj.rows[0].style.cssText;
Row.style.fontWeight = 'bold';
//******** This loop will create each header cell *********
for(var iCntr =0; iCntr < DataGridObj.rows[0].cells.length; iCntr++)
{
var spanTag = Row.appendChild(document.createElement('td'));
spanTag.innerHTML = DataGridObj.rows[0].cells[iCntr].innerHTML;
var width = 0;
//****** Setting the width of Header Cell **********
if(spanTag.clientWidth > DataGridObj.rows[1].cells[iCntr].clientWidth)
{
width = spanTag.clientWidth;
}
else
{
width = DataGridObj.rows[1].cells[iCntr].clientWidth;
}
if(iCntr<=DataGridObj.rows[0].cells.length-2)
{
spanTag.style.width = width + 'px';
}
else
{
spanTag.style.width = width + 20 + 'px';
}
DataGridObj.rows[1].cells[iCntr].style.width = width + 'px';
}
var tableWidth = DataGridObj.clientWidth;
//********* Hidding the original header of GridView *******
DataGridObj.rows[0].style.display = 'none';
//********* Setting the same width of all the components **********
HeaderDivObj.style.width = DataDivWidth + 'px';
DataDivObj.style.width = DataDivWidth + 'px';
DataGridObj.style.width = tableWidth + 'px';
HeadertableObj.style.width = tableWidth + 20 + 'px';
return false;
}
在页面加载或任何你想要的地方调用上面的代码,
sub page_load()
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "CreateGridHeader", "javascript:CreateGridHeader()", True)
End Sub
并且设计应该有以下div
<div id="divposgrid" style="width: 99.9%; border-bottom: 1px solid white;height: 220px;">
<div id="HeaderDiv" runat="server">
</div>
<div id="divmain" style="overflow: auto; height: 150px; margin-left: 1px; margin-top: 0px" runat="server">
<`your table>
</div>
</div>