WEB开发网
开发学院WEB开发ASP.NET 页面中包括DataGrid时,利用webclient获取页面源代... 阅读

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

 2006-05-12 17:06:24 来源:WEB开发网   
核心提示: 主要问题,利用webclent获取页面源代码时,页面中包括DataGrid时,利用webclient获取页面源代码的解决方,当页面中含有datagrid,并且该控件使用了自带的分页功能时,代码如下: string result=""; result = this.loadtop ("ht

  主要问题,利用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>,

出处:http://bccu.cnblogs.com/archive/2006/05/11/397382.html

Tags:页面 包括 DataGrid

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接