程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 頁面中包括DataGrid時,利用webclient獲取頁面源代碼的解決方

頁面中包括DataGrid時,利用webclient獲取頁面源代碼的解決方

編輯:.NET實例教程

主要問題,利用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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved