主な問題は、webclent を使用してページのソース コードを取得するときに、ページにデータグリッドが含まれており、コントロールが独自のページング関数を使用している場合、通常の方法では最初のページのデータと他のページのデータしか取得できないことです。
取得できない場合は、次の解決策があります。
方法 1:
主なアイデアは、webclient を使用してサービスにデータを投稿し、データを取得することです。ここでは、主にページの構成と実行プロセスを分析するために、次のページがクリックされたときに 3 つのプロセスが実行されることがわかりました。パラメータが掲載されます。
__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" value="","");
vie=vie.Replace ("" />","");
WebClient a = new WebClient();
NameValueCollection na = 新しい 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 language='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>、