El principal problema es que cuando se usa webclent para obtener el código fuente de la página, cuando la página contiene datagrid y el control usa su propia función de paginación, el método normal solo puede obtener los datos de la primera página y los datos de otras páginas.
Si no puedes conseguirlo, aquí tienes la solución.
Método uno:
La idea principal es utilizar el cliente web para publicar datos en el servicio para obtener datos. Aquí utilizamos principalmente una pequeña herramienta para analizar la composición y el proceso de ejecución de la página. Durante el análisis, encontramos que cuando se hace clic en la página siguiente, hay tres. Los parámetros serán publicados.
Son: __EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE. Aquí el parámetro __VIEWSTATE se obtiene al abrir la primera página de datos, __EVENTTARGET es el nombre del control a llamar (se puede obtener a través de httpwatch), __EVENTARGUMENT es el parámetro al llamar al evento, el código es el siguiente:
resultado de cadena ="";
resultado = this.loadtop (" http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110 ");
string vie = GetTagContent(resultado,"nombre="__VIEWSTATE" valor="","" />");
vie=vie.Replace ("nombre="__VIEWSTATE" valor="","");
vie=vie.Replace ("" />","");
Cliente Web a = nuevo Cliente Web();
NameValueCollection na = nueva NameValueCollection();
na.Add("__EVENTTARGET","NewHouseGridModule1:ModuleSplitPage:lbnNextPage");
na.Add("__VIEWSTATE",vie);
byte [] ss = a.UploadValues(" http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110","POST",na );
Codificación encode=Codificación .GetEncoding ("utf-8");
resultado=encode.GetString(ss);
Método 2:
Utilice el control axWebBrowser para descargar la primera página y luego agregue el siguiente código en la parte inferior:
<script language='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>,
fuente: http://bccu.cnblogs.com/archive/2006/ 05/11/397382.html