首页 新闻 会员 周边

gridview列局部刷新

0
悬赏园豆:100 [已解决问题] 解决于 2013-09-03 15:33

 gridview局部刷新。由于Gridview某列存在复杂的逻辑计算(没办法去优化了)很耗费时间,想先把这列先用一个加载图片替换,使之能快速加载Gridview。等整个页面加载完成以后再逐一加载这一列的值。

搁置的主页 搁置 | 初学一级 | 园豆:114
提问于:2013-09-02 15:29
< >
分享
最佳答案
0

把那一列的每一行用一个小img代替,然后每个图片调用img的onload事件

img.onload = function () {
  //调用ajax方法取数据(图片id或name什么的做参数)
}

谷歌浏览器应该没问题,ie的话你试试吧

收获园豆:90
捂汗 | 初学一级 |园豆:168 | 2013-09-02 17:49

gridview加载完,怎么逐一调用img的onload事件

搁置 | 园豆:114 (初学一级) | 2013-09-02 20:10

点击gridview分页的时候特别慢

搁置 | 园豆:114 (初学一级) | 2013-09-03 10:19

@搁置: img的onload事件是浏览器加载的 不用你去调用

捂汗 | 园豆:168 (初学一级) | 2013-09-03 11:25

@捂汗: 

function ImgCheck(e){
var id= e.name;
$.getJSON("View.aspx", { "mode":"1", "key": escape(id),rd: Math.random() }, function(msg) {
count = msg.Table.length;
$.each(msg.Table, function (i, j) {
var name1=j.UserRoleDetail;
$("#"+id).val(name1);
e.style.display="none";
$("#" + id).show();

})
})

}

 

 

<ItemTemplate>
<img src="Img/jdt.gif" style="width: 14PX; height: 14px" id="imgid" name='<%# Eval("ID").ToString()%>'
onload="ImgCheck(this);" />
<input type="text" id='<%# Eval("ID").ToString()%>' style="display: none" />
</ItemTemplate>  

 

为什么 分页的时候很慢很慢

搁置 | 园豆:114 (初学一级) | 2013-09-03 11:26

@搁置: 怎么个慢法?数据出来的慢?服务器响应慢?有多慢?

捂汗 | 园豆:168 (初学一级) | 2013-09-03 11:31

@捂汗: 服务器响应慢 。

  

public SqlHelper sp = new SqlHelper();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitBind();
}

if (Request["mode"] == "1")
{
string id = Server.UrlDecode(Request["key"].ToString()).ToString();
string sql1 = "select UserRoleDetail from SET_User_Role where ID='" + id + "'";
DataSet ds = sp.getDs(sql1, CommandType.Text, null, null);
int cont = 0;
for (int i = 0; i < 100000; i++)
{
for (int j = 0; j < 1000; j++)
{
cont += i + j;
}
}
Response.Write(SinglePropertyStateDataSetToJson(ds, true));

Response.End();
}

}

搁置 | 园豆:114 (初学一级) | 2013-09-03 11:51

@搁置: img的load事件在chrome浏览器是等页面load以后才执行的,所以那一列的数据肯定是等页面展现完成以后才开始取数据然后一个一个出来的,ie的话应该是执行到图片那儿就去取数据了。不知道你说的慢是不是图片那一列出来的比较晚?

捂汗 | 园豆:168 (初学一级) | 2013-09-03 12:00

@捂汗: 可能是吧。在IE里面点分页的时候整个Gridview 出来的比较晚。用chrome浏览器GridView出来的很快,然后一个个刷数据。请问有什么方法解决吗?

搁置 | 园豆:114 (初学一级) | 2013-09-03 14:02

@搁置: 你不就是希望gridview先出来,然后那列比较复杂的数据后出来么?

捂汗 | 园豆:168 (初学一级) | 2013-09-03 14:04

@捂汗: 是啊,可是在IE里面点击分页的时候GridView出来很慢。先img加载事件执行一遍,然后再加载那一列的数据等于加载了2遍那列比较复杂的数据

搁置 | 园豆:114 (初学一级) | 2013-09-03 14:26

@搁置: 这个。。。ie的话当初我就想到可能有问题,你可以判定一下浏览器类型,如果是ie的话就做另外一种处理。但是chrome的情况是你希望看到的是吗?

捂汗 | 园豆:168 (初学一级) | 2013-09-03 14:28

@捂汗: 嗯,要chrome这样的。

搁置 | 园豆:114 (初学一级) | 2013-09-03 14:31

@捂汗: 怎么能在IE里面达到chrome这样的效果

搁置 | 园豆:114 (初学一级) | 2013-09-03 14:37

@搁置: 你在图片load的时候用ajax的异步方法,还会影响gridview的展示?

捂汗 | 园豆:168 (初学一级) | 2013-09-03 14:41

@捂汗: 嗯,我那代码都在上面。 第一页不影响,点击分页的时候会有影响。在IE里面点击Gridview 下一页很慢(可能它去执行图片load事件了)在chrome里点击gridview很快。

搁置 | 园豆:114 (初学一级) | 2013-09-03 14:47

@搁置: 可以了 是IE中IMG的onload事件重复执行的问题  加一个 e.onload=null;就行了

搁置 | 园豆:114 (初学一级) | 2013-09-03 15:30

@搁置: 哦,这样啊 =_=!!!

捂汗 | 园豆:168 (初学一级) | 2013-09-03 17:28
其他回答(2)
0

页面加载完成后 用ajax 方式取数据 加更新。

收获园豆:5
Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-02 15:55

AJAX获取数据怎么绑定到Gridview 那一列。

支持(0) 反对(0) 搁置 | 园豆:114 (初学一级) | 2013-09-02 15:58

@搁置: 在那一列你可以根据每一行中的id,或其它标志取到,理更新。

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-03 11:07
0

Ajax运算。2楼的方法挺好的~~~

收获园豆:5
幻天芒 | 园豆:37175 (高人七级) | 2013-09-02 18:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册