주요 문제는 webclient를 사용하여 페이지 소스 코드를 얻을 때 페이지에 DataGrid가 포함되어 있고 컨트롤이 자체 페이징 기능을 사용하는 경우 일반적인 방법으로는 첫 번째 페이지의 데이터와 다른 페이지의 데이터만 얻을 수 있다는 것입니다.
얻을 수 없다면 해결책은 다음과 같습니다.
방법 1:
주요 아이디어는 웹 클라이언트를 사용하여 데이터를 얻기 위해 서비스에 데이터를 게시하는 것입니다. 여기서는 주로 작은 도구를 사용하여 페이지의 구성 및 실행 프로세스를 분석하는 동안 다음 페이지를 클릭할 때 세 가지를 발견했습니다. 매개변수가 게시됩니다.
__EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE입니다. 여기서 __VIEWSTATE 매개변수는 데이터의 첫 페이지를 열 때 얻어지고, __EVENTTARGET는 호출할 컨트롤의 이름(httpwatch를 통해 얻을 수 있음), __EVENTARGUMENT는 이벤트 호출 시 매개변수, 코드는 다음과 같습니다.
문자열 결과 ="";
result = this.loadtop (" http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110 ");
string vie = GetTagContent(result,"name="__VIEWSTATE" value="","" />");
vie=vie.Replace ("name="__VIEWSTATE" 값="","");
vie=vie.Replace ("" />","");
웹클라이언트 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 );
인코딩 encode=인코딩 .GetEncoding("utf-8");
결과=encode.GetString(ss);
방법 2:
axWebBrowser 컨트롤을 사용하여 첫 번째 페이지를 다운로드한 후 맨 아래에 다음 코드를 추가합니다.
<script 언어='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>,