O principal problema é que ao usar o webclent para obter o código fonte da página, quando a página contém datagrid e o controle utiliza sua própria função de paginação, o método normal só consegue obter os dados da primeira página e os dados das demais páginas.
Se você não consegue, aqui está a solução.
Método um:
A ideia principal é usar o webclient para postar dados no serviço para obter dados. Aqui usamos principalmente uma pequena ferramenta para analisar a composição e o processo de execução da página. Durante a análise, descobrimos que quando a próxima página é clicada, três. parâmetros serão postados.
São eles: __EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE. Aqui o parâmetro __VIEWSTATE é obtido ao abrir a primeira página de dados, __EVENTTARGET é o nome do controle a ser chamado (pode ser obtido através do httpwatch), __EVENTARGUMENT é o parâmetro ao chamar o evento, o código é o seguinte:
string result ="";
resultado = this.loadtop (" http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110 ");
string vie = GetTagContent(result,"nome="__VIEWSTATE" valor="","" />");
vie=vie.Replace ("nome="__VIEWSTATE" valor="","");
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 );
Codificação encode=Encoding .GetEncoding ("utf-8");
resultado
=encode.GetString(ss);
Use o controle axWebBrowser para baixar a primeira página e adicione o seguinte código na parte inferior:
<script language='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>,
fonte: http://bccu.cnblogs.com/archive/2006/ 11/05/397382.html