页面中包括DataGrid时,并且有分页,利用webclient获取页面源代码的解决方法
2010-01-25 17:32
267 查看
主要问题,利用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>
方法一:
主要思路是利用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>
相关文章推荐
- 页面中包括DataGridj时,利用webclient获取页面源代码的解决方法
- 页面中包括DataGrid时,利用webclient获取页面源代码的解决方
- datagrid获取页面总记录数的方法,datagrid获取页面总记录数为0的解决方法
- 在phpstorm中利用post方法提交form表单后,在响应页面获取不到数据的解决办法
- c#利用WebClient和WebRequest获取网页源代码的比较
- 利用hibernate的session查询数据库,并且在jsp页面显示表内容的方法
- html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题
- html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题
- php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法
- 输入框获取焦点,页面放大解决方法
- 页面无法获取list bean解决方法
- c#利用WebClient和WebRequest获取网页源代码的比较
- Servlet从上一个页面获取参数(中文乱码解决方法)
- DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
- 利用PHP对页面源代码过滤的几种方法
- c#利用WebClient和WebRequest获取网页源代码的比较
- 动态获取html页面的内容,并且取其中的某块元素的方法
- 利用jQuery中的serialize方法大量获取页面中表单的数据,发送的服务器
- WEB页面打印方法,包括如何设置打印分页
- html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题