C#改变下拉选框值,刷新页面后如何保持页面位置?
自己做了一个小程序,连接Access数据库。在录入数据的页面中,由于属性较多,采用了许多下拉菜单,结果好像每改变一个下拉选框的值,页面都会刷新一次。这个不重要,问题在于,...
自己做了一个小程序,连接Access数据库。
在录入数据的页面中,由于属性较多,采用了许多下拉菜单,结果好像每改变一个下拉选框的值,页面都会刷新一次。
这个不重要,问题在于,属性比较多,页面比较多,当一屏显示不下的时候,位于下面的下拉选框的值一旦改变,因为会刷新,所以页面就回到了顶端,这时候如果要继续选择下面的选框就要把页面拉到下面去,结果一改变数值就又回到顶端,如此周而复始,太麻烦了。
寻求一种方法,改变了下方(一屏显示不下的)下拉菜单值,无论刷不刷新,页面仍然定位在此处,不需要拉动页面滚动条。
如上,有什么办法或者参数可以实现?请各位大侠不吝赐教,感谢!
二楼大侠说的方法我已经想到了,但是问题在于我需要随时根据下拉菜单的数值来进行运算并作出提示,不刷新不方便。
我想要的是 既能刷新又能定位的方法。
一楼的大侠是否能说的更清楚一点儿?我比较菜,不太明白。 展开
在录入数据的页面中,由于属性较多,采用了许多下拉菜单,结果好像每改变一个下拉选框的值,页面都会刷新一次。
这个不重要,问题在于,属性比较多,页面比较多,当一屏显示不下的时候,位于下面的下拉选框的值一旦改变,因为会刷新,所以页面就回到了顶端,这时候如果要继续选择下面的选框就要把页面拉到下面去,结果一改变数值就又回到顶端,如此周而复始,太麻烦了。
寻求一种方法,改变了下方(一屏显示不下的)下拉菜单值,无论刷不刷新,页面仍然定位在此处,不需要拉动页面滚动条。
如上,有什么办法或者参数可以实现?请各位大侠不吝赐教,感谢!
二楼大侠说的方法我已经想到了,但是问题在于我需要随时根据下拉菜单的数值来进行运算并作出提示,不刷新不方便。
我想要的是 既能刷新又能定位的方法。
一楼的大侠是否能说的更清楚一点儿?我比较菜,不太明白。 展开
5个回答
展开全部
把这些下拉菜单的AutoPostBack属性设置成false,就不会每选一次都刷新页面了。
为了更新所录入的数据,可以添加一个“更新”(也可叫“提交”)按钮,此时再PostBack执行数据库的SQL UPDATE INSERT指令。
问题补充:二楼大侠说的方法我已经想到了,但是问题在于我需要随时根据下拉菜单的数值来进行运算并作出提示,不刷新不方便。
我想要的是 既能刷新又能定位的方法。
=====================================================================
如果你一定要AutoPostback的话,可以用客户端Javascript来实现自动窗口滚动。
首先,你需要一个隐藏字段来存储你所点击的下拉菜单的当前位置:
<asp:HiddenField ID="HiddenField1" runat="server" />
其次,需要修改<body>标记, 改成:<body runat="server" id="bodyID">
这样才可以在服务器端对它进行修改。
你还要修改你的下拉菜单标记,加一条客户端事件响应,类似于这样:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" onchange="HiddenField1.value = this.offsetTop;">
处理onchange事件,这样当它的内容改变,准备Postback前,会把当前坐标存到HiddenField1中。
最后,在你的页面的Page_Load事件处理中加上一条:
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
this.bodyID.Attributes.Add("onload", "window.scrollTo(0," + this.HiddenField1.Value + ");");
}
}
当页面再次刷新时,就会自动卷动到你最后的下拉菜单的位置了。
为了更新所录入的数据,可以添加一个“更新”(也可叫“提交”)按钮,此时再PostBack执行数据库的SQL UPDATE INSERT指令。
问题补充:二楼大侠说的方法我已经想到了,但是问题在于我需要随时根据下拉菜单的数值来进行运算并作出提示,不刷新不方便。
我想要的是 既能刷新又能定位的方法。
=====================================================================
如果你一定要AutoPostback的话,可以用客户端Javascript来实现自动窗口滚动。
首先,你需要一个隐藏字段来存储你所点击的下拉菜单的当前位置:
<asp:HiddenField ID="HiddenField1" runat="server" />
其次,需要修改<body>标记, 改成:<body runat="server" id="bodyID">
这样才可以在服务器端对它进行修改。
你还要修改你的下拉菜单标记,加一条客户端事件响应,类似于这样:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" onchange="HiddenField1.value = this.offsetTop;">
处理onchange事件,这样当它的内容改变,准备Postback前,会把当前坐标存到HiddenField1中。
最后,在你的页面的Page_Load事件处理中加上一条:
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
this.bodyID.Attributes.Add("onload", "window.scrollTo(0," + this.HiddenField1.Value + ");");
}
}
当页面再次刷新时,就会自动卷动到你最后的下拉菜单的位置了。
展开全部
尽量不要刷新页面,因为每次控件的POSTBACK,都会有大量的数据传输,鉴于你这够情况,尽可能采用ajax,更合理一些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在回调函数中加入或者注册Scrollintoview
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的办法就是使用ajax控件中的updatepanel控件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
锚点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询