怎么在查询按钮事件执行前,隐藏结果表格,执行完,更新结果表格后,再自动显示表格?

haitao 2010-09-20 10:14:45
终于开始接触asp.net了,一直使用delphi,可能思路有点延续,但是需求是一样的

需求1、
怎么在查询按钮事件执行前,隐藏结果表格,执行完,更新结果表格后,再自动显示?
看代码,是这样的:
btnSearch.Attributes.Add("onclick", "this.value='搜索中...';this.disabled = true;" + ClientScript.GetPostBackEventReference(btnSearch, "alert('ttt');"));
但是它仅仅实现了:在查询按钮事情执行前,按钮变灰,修改标题,
上次的结果表格还显示着,用户等待时容易以为这是新结果了
执行完,自动更新按钮
没有结果表格的隐藏和显示过程

有btnSearch.Attributes.Add("onclick", 。。。。。很好,
那么有btnSearch.Attributes.Add("afterclick"或"afteroutput", 。。。。吗?


需求2、
如果能更进一步:现在是最多显示100行,输出时,每行要进行一个复杂的处理(大约要0.5-1秒)
如何能在C#每处理一行时,在页面动态显示 正在处理 x/100 。。。?
好像B/S要这样做就很困难??
如果浏览器ajax不断地刷新以取得x,则已经处理的行数x只有那个C#才知道,ajax的查询怎么能正好被那段C#代码接到呢?
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2010-09-23
  • 打赏
  • 举报
回复
在现有的c#/asp.net的框架下,有没有足够的执行机会:

需求1:后台事件执行完毕,如何让一个指定的js得到执行机会
(如果按我以前做web的方式,会由asp或isapi返回的html里带一行js代码,以便执行指定的js函数。现在asp.net应该不用我这样返回html了,而是只要我在一个地方指定js函数名,它自动替我带出来了吧?)

需求2:C#循环执行,每一次能给前台一定的信息(如我已经执行到第x次了,总共是n次)以便前台的js函数能利用这个x、n做一点的进度指示

需求3:前台的某个文本框A内容变了,执行一个js(以便把新内容赋给另一个文本框B)
问题是,这次的文本框A是一个日期输入框,一进入就通过一个日历js库离开此框而跳出日历选择窗口(或div),选择完毕,才把日期赋给A。我想在这时把新日期赋给另一个文本框B(前提是不修改那个日历js库)
这个需求好像与c#什么无关了,就是一个普通的dhtml的需求,如果textbox有前台的onchanged事件,就很好解决
symbol_bc 2010-09-20
  • 打赏
  • 举报
回复
其实我觉得你这个需求用ajax挺好,两个问题都能满足,第一个就可以控制显示,第二个再来一个进度条挺好。
haitao 2010-09-20
  • 打赏
  • 举报
回复
1、点击按钮后,按钮变灰了,但是上次的结果没隐藏
新的结果来的比较慢,用户等待时,乍一看,以为新结果来了,其实还是旧的
如果,先隐藏,有新结果才重新显示,则不会有这个误会了

2、如果10秒以上的等待,有进度条是能改善用户的等待焦虑
symbol_bc 2010-09-20
  • 打赏
  • 举报
回复
1.那看来是正常的表单提交,用的repeator控件是吧,其实这样的话就没有所谓的“执行前,执行后”了,
在server端无论怎么执行,发到客户端的时候都同时展现,你点击按钮的同时,表单提交,根本没必要设置什么显示不显示。

2.有一些进度条都是伪的,显示实时进度的不会有人做,就算是用ajax实时刷新,对服务器都是巨大的负担。
JiuchunYoung 2010-09-20
  • 打赏
  • 举报
回复
http://www.easeas.net/Help_Details.aspx?id=32
在asp.net中使用JQuery ProgressBar显示实时进度
JiuchunYoung 2010-09-20
  • 打赏
  • 举报
回复
帮你顶顶吧

1. 如果如你所述 就是Ajax的无刷新的 查询了


2. http://hi.baidu.com/hwt658/blog/item/4b8e3198b0e1af026f068cf3.html

制做Web实时进度条


haitao 2010-09-20
  • 打赏
  • 举报
回复
1、是由C#得到100行数据,再逐一处理,生成到repeator里
如果有机会在执行完,更新结果表格后,自动触发执行一个js,则我在这里写显示表格的js,也算解决了
但是好像没有这样的事件

2、据说有一个什么row的事件,但是我这个C#初学者找不到北........
symbol_bc 2010-09-20
  • 打赏
  • 举报
回复
问题1:你是用ajax处理的吗?还是普通的表单回发啊
aja的话就是操作脚本。

问题2:显示实时进度在asp.net里确实是几乎不可能完成的任务,这也和http的本身有关,没办法。
paual779 2010-09-20
  • 打赏
  • 举报
回复
1. 使用纯ajax
2. 使用jquery
haitao 2010-09-20
  • 打赏
  • 举报
回复
已经是别人写好的现成的应用了,而且我目前也没整个重写的能力
只是想加一点小效果,改善用户体验

我看查询时,会自动显示红色的“Loading....”,加载新结果后,它会自动消失
如果能对结果表格也做相反的操作,应该就实现需求1了

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧