页面中包括DataGridj时,利用webclient获取页面源代码的解决方法


页面中包括DataGridj时,利用webclient获取页面源代码的解决方法

 
主要问题,利用webclent获取页面源代码时,当页面中含有datagrid,并且该控件
 使用了自带的分页功能时,正常的方法只能获取第一页面的数据,其它页面的数据
取不到,以下是解决方法。   
方法一:
  主要思路是利用webclient,post数据到服务来取得数据,这里主要用了一个小工具
可以分析页面的组成及运行过程,分析中发现当点击下一页时,会Post三个参数过去,
分别是:__EVENTTARGET、__EVENTARGUMENT、__VIEWSTATE。这里__VIEWSTATE参数在从打开第一页数据时取得,__EVENTTARGET为要调用控件的名称(可以通过httpwatch来获取),__EVENTARGUMENT是调用事件时的参数,代码如下:

string result="";
result = this.loadtop ("http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110");
string vie = GetTagContent(result,"name=\"__VIEWSTATE\" value=\"","\" />");
vie=vie.Replace ("name=\"__VIEWSTATE\" value=\"","");
vie=vie.Replace ("\" />","");
WebClient a = new WebClient();
NameValueCollection na = new NameValueCollection();
na.Add("__EVENTTARGET","NewHouseGridModule1:ModuleSplitPage:lbnNextPage");
na.Add("__VIEWSTATE",vie);
byte [] ss = a.UploadValues("http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110","POST",na);
Encoding encode=Encoding .GetEncoding ("utf-8");
result=encode.GetString(ss);

 方法二:
  利用axWebBrowser控件,下载第一页,然后在最下面这如下代码:
<script language='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>,

优质内容筛选与推荐>>
1、centos7安装redis
2、阿里巴巴Json工具-Fastjson讲解
3、Hadoop日记Day18---MapReduce排序分组
4、用yarn代替npm
5、WIN7 系统安装 ruby 并使用 SASS


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号