您的位置:首页 > 其它

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才会出现;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: