المشكلة الرئيسية هي أنه عند استخدام webclent للحصول على الكود المصدري للصفحة، عندما تحتوي الصفحة على datagrid ويستخدم عنصر التحكم وظيفة الترحيل الخاصة به، فإن الطريقة العادية يمكنها فقط الحصول على بيانات الصفحة الأولى وبيانات الصفحات الأخرى.
إذا لم تتمكن من الحصول عليه، فإليك الحل.
الطريقة الأولى:
الفكرة الرئيسية هي استخدام webclient لنشر البيانات إلى الخدمة للحصول على البيانات. هنا نستخدم بشكل أساسي أداة صغيرة لتحليل تكوين الصفحة وتشغيلها، ووجدنا أنه عند النقر على الصفحة التالية، ثلاثة سيتم نشر المعلمات
وهم: __EVENTTARGET، __EVENTARGUMENT، __VIEWSTATE. هنا، يتم الحصول على المعلمة __VIEWSTATE عند فتح الصفحة الأولى من البيانات، __EVENTTARGET هو اسم عنصر التحكم المراد استدعاؤه (يمكن الحصول عليه من خلال httpwatch)، __EVENTARGUMENT هو المعلمة عند استدعاء الحدث، الكود كما يلي:
نتيجة السلسلة ="";
النتيجة = 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