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