惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
腾讯CDC
D
Docker
The Cloudflare Blog
量子位
爱范儿
爱范儿
L
LangChain Blog
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
Vercel News
Vercel News
MyScale Blog
MyScale Blog

博客园 - CsharpFish

Sql2005 PIVOT运算符的操作 Lodop使用之WEB套打程序开发 jquery插件treeTable Asp.net 后台添加CSS、JS、Meta标签的写法 DataGridView拖动换行 CodeSmith----SchemaExplorer类结构详细介绍 - CsharpFish - 博客园 js request 应用举例 背景图片随窗口拉伸 WebBrowser网页局部打印 - CsharpFish - 博客园 js日期控件-梅花雨 利用VML生成柱状图和饼图 js操作Table绑定DataSet 小小个人消费管理系统(已完善) GridView分页用户自定义控件 DbType与OleDbType asp.net页面传值(transfer Context.Handler) GridViev皮肤(Skin&CSS) JavaScript验证控件并阻止表单提交 GridView自定义分页存储过程
添加修改后返回刷新查询页面
CsharpFish · 2008-07-01 · via 博客园 - CsharpFish

    问题如题,如果返回的不是查询页面而是一个单纯的列表页面也就容易了网上有好多解决方法都是很不错的,可问题是现在返回要刷新的是一个查询页。不但要记录查询条件还要记录GridView的当前页。(下面A为查询页,B为修改页)
    试过很多方法,比如在地址栏里传参数、Session里存放参数、禁用缓存、Server.Transfer()传参、弹出也面等都不能实现全部功能。最后想到了下面的办法虽不是很完美但实现了所要求的功能。
    第一步:
    在A页面添加一个HidenField设ID为hdRefresh,用来记录页面是否需要重新提交。
    再添加一个HidenField设ID为hdCurrentPage,用来记录查询的时候是否需要记录GridView的当前页。
    在page的onload事件里调用Refresh()方法,代码如下:

     <asp:HiddenField ID="hdRefresh" runat="server" Value="false" />
     
<asp:HiddenField ID="hdCurrentPage" runat="server" Value="false" />
     
<script language="javascript" type="text/javascript">
      
function Refresh()
      
{
           
var hdRefresh = document.getElementById("hdRefresh");
           
var hdCurrentPage = document.getElementById("hdCurrentPage");
           
if(hdRefresh.value == "false")
           
{
              hdRefresh.value 
= "true";     
           }

           
else
           
{
              
//window.location.reload();
              hdCurrentPage.value = "true";
              document.form1.submit();
           }

       }

    
</script>


    第二步:
    页面Page_Load的时候设hdRefresh.Value = "false"并判断是否执行查询。

    protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!Page.IsPostBack)
        
{
            Query();
        }

        
if (hdCurrentPage.Value == "true")
        
{
            Query(GvPageSet1.CurrentInfo);
            hdCurrentPage.Value 
= "false";
        }

        hdRefresh.Value 
= "false";
    }

    
    第三步:
    A页面GridView中的编辑和添加HypeLink不能使用GridView本身的OnRowEditing和OnRowDeleting要写成如下形式否则用submit()提交页面的时候会出问题的。

<asp:TemplateField ShowHeader="False" Visible="true">
 
<ItemTemplate>
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "BillEdit.aspx?ID="+Eval("ID") %>' DataNavigateUrlFields="ID" Text="编辑" Target="_self"></asp:HyperLink>
 
</ItemTemplate>
</asp:TemplateField>

    第四步:
    B页面里用history.go(-?)返回A页面。
    到这里就算是完成任务了,这个方法有一个不好的地方就是利用history.go返回页面后马上就会再次提交页面所以给人一种页面闪了一下的感觉。