Webpage has expired 和 动态生成的表Table的第一行固定
2013-09-11 10:19
190 查看
1. ASP.NET在按Backword或者Forward的时候,出现错误:Webpage
has expired
我们可以用以下方式解决:一种方法是在后台用下面的方法:
在Page_load函数中添加以下代码,这样当postback的时候就可以确保page每次都是从Server端获得的:
C#代码:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
另一种方法是在前台可以用下面的方式解决:
我们用JavaScript把浏览器的back按钮或者forward按钮给禁用了,下面的代码可以放在前台页面的head部分:
JavaScript代码:
<scripttype="text/javascript">
functionpreventBack(){window.history.forward();}
setTimeout("preventBack()", 0);
window.onunload=function(){null};
</script>
2. 动态生成的表Table的第一行固定
2.1
问题
在表格向下滚动的时候,由于第一行因为滚动而隐藏了,所以最我们看不到表头信息,为了解决这个问题,看下面的叙述:2.2
解决方案
在ASP.NET生成的表进行设计的时候,我们可以使用两个表来完成一个表的功能,一个表叫HeadTabel,另一个叫做RowTable;然后我们把这两个表分别放在一个DIV中,这个两个DIV,分别叫做HeadDiv和RowDiv;并且要设置这个2个Div的height和width,和Scrollbar,因为只有设置了Div的height和width后,当headTable或者RowTable的height或者width超过了Div的height或者width后,才会出现Scrollbar;Table和Div的构造按照以下方式:
<div
id ="HeaderDiv" style="width:920px;height:40px;
overflow:hidden;"
runat="server">
<tableid="HeaderTable" runat="server">
</table>
</div>
<div
id ="RowDIV" style="width:940px;height:360px;overflow:scroll;"runat="server">
<tableid="rowTable"
runat="server">
</table>
</div>
这里RowDiv的滚动条设置为overflow:scroll, 而HeadDiv的滚动条设置为overflow:hidden,这里这样设置是为了防止出现2个滚动条;
为了使得当RowDiv的滚动条横向滚动时,HeadDiv的也跟着滚动到相应的位置,我们必须给RowDiv加上滚动条相应事件,这里为了在后台动态添加Div控件的事件函数,我们让这个2个DIV的runat属性设置为server:
C#后台添加事件:
rowTableDiv.Attributes.Add("onscroll",
"onScrollMove(this)");
Javascript前台代码:
functiononScrollMove(control) {
varhead_div = document.getElementById('ContentBottom_tableHeaderDiv');
if(head_div !=
null)
{
head_div.scrollLeft =control.scrollLeft;
}
}
当然,仅仅这样做有个缺点,当表中数据位空的时候,只有HeadTable里面的列名,当列名长度大于HeadDiv的长度的时候,HeadTable靠近右面的列名就看不到了,因为HeadDiv的滚动条是隐藏的;为了解决这个问题我们要分情况:
1) 当RowTable的行数大于等于1时,我们使得RowDiv的Scorll Bar事件控制HeadDiv的ScorllBar位置,此时RowDiv的overflow属性为scroll, 而HeadDiv的overflow属性为:hidden;
2) 当RowTable的行数为0时,我们使得HeadDiv的Scorll Bar控制其自己,把RowDiv的Scroll Bar隐藏掉,此时此时RowDiv的overflow属性为hidden, 而HeadDiv的overflow属性为:scroll;
我们这样可以在后台用代码控制其属性设置:
C#代码如下:
HeadDiv.Style.Add("overflow","scroll");
RowDiv.Style.Add("overflow",
"hidden");
这里需要注意:只有当Table的height或者width大于了Div的height或width的时候,这是DIV的Scorll
Bar才会出现;
相关文章推荐
- table 固定显示第一行 & 动态改变table高度
- JQuery动态生成Table表格
- JSF: 动态生成的DataTable, 固定表头, 固定行标
- js动态生成table的一行 并且是复制的当前行 列都一起生成了
- jquery 动态的把table左边列表固定不动,右边可上下滑动。
- ASP.net动态生成table(原创)
- ABAP 动态生成内表的几种方法(Several Methods of Dynamic Internal Table Creation)
- JQuery动态生成Table表格
- ABAP动态生成经典应用之Table数据Upload 程序
- ASP.net动态生成可编辑table
- js动态生成table【转】js动态生成table【转】
- JSF: 动态生成的DataTable, 固定表头, 固定行标
- 动态生成HtmlTable 说明。
- 根据要显示的字段个数动态生成表格标签table及内容
- 现在有动态生成table若干行,每行里会有一个button.当鼠标点击其中一个button时.如何让程序知道是点在第几行的button上
- AngularJs+Bootstrap Table $compile动态生成html
- 用DWRUtil动态生成Table
- android学习——使用TableLayout动态生成表格,并为tablerow中的列添加点击监听
- 动态生成table并实现分页效果
- JS -- <table> 行号自增,前端动态生成的<tr>