2014-11-04 38 views
0

我有一个网页,带我到另一个页面,其中包含有关按学生ID搜索的学生信息。我有一个学生ID列表。我应该从第二页中检索学生信息并将其存储在数据表中。这里是代码暂停循环,直到WebBrowser导航并加载文档

string id { get ; set ;} 
int lCount; 
List<string> ids = new List<string>{"A1201", "A1202", "A1203"}; 
Datatable result = new Datatable(); 

private void button1_Click(Object sender, EventArgs e) 
{ 
    for(int i = 0 ; i < totalids ; i++) 
    { 
     lCount = i; 
     webbrowser1.Navigate("http://www.sksit.com"); 
     webbrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted) 
    } 
} 

private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if(e.URL.toString() == "http://www.sksit.com") 
    { 
     HtmlElement el = webbrowser1.Document.GetElementById("sid"); 
     el.SetAttribute("value", ids[lCount]); 

     HtmlElement cl = webbrowser1.Document.GetElementById("Search"); 
     cl.InvokeMember("click"); 
    } 
    elseif(e.URL.toString() == "http://www.sksit.com/studentprofiles") 
    { 
     HtmlElement el = webbrowser1.Document.GetElementById("studentinfotab"); 
     string info = el.InnerHtml; 
     string[] tableinfo = info.Split(' '); 
     DataRow trow = result.newDataRow(); 
     for(int j =0 ; j < tableinfo.Count() ; j++) 
     { 
     trow[j] = tableinfo[j]; 
     } 
     result.Rows.Add(trow); 
    } 
} 

当我看到执行后的结果表时,它显示没有数据。这个代码工作正常,当一个单一的ID传递。当它被放入一个循环时,没有看到数据,并且它显示lCount为2.请关注如何暂停循环直到它完成加载和解析。谢谢。

+0

你正在浏览相同的Web浏览器来下循环按钮的客户端事件totalids时间..它似乎是错误的 – 2014-11-04 19:16:23

+0

你跟Web浏览器控件绑定...而不是使用开源图书馆..专为网络报废 – 2014-11-04 19:17:12

+0

我visted http://www.sksit.com,但没有找到与“sid”元素.. – 2014-11-04 19:19:39

回答

0

尝试类似这样的事情。给你粗略的想法..

string id { get ; set ;} 
    int lCount; 
    List<string> ids = new List<string>{"A1201", "A1202", "A1203"}; 
    Datatable result = new Datatable(); 

    private void button1_Click(Object sender, EventArgs e) 
    { 

      lCount = 0; 
      webbrowser1.Navigate("http://www.sksit.com"); 
      webbrowser1.DocumentCompleted += new      WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted) 

    } 

    private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     if(e.URL.toString() == "http://www.sksit.com") 
     { 
      HtmlElement el = webbrowser1.Document.GetElementById("sid"); 
      el.SetAttribute("value", ids[lCount]); 

      HtmlElement cl = webbrowser1.Document.GetElementById("Search"); 
      cl.InvokeMember("click"); 
     } 
     elseif(e.URL.toString() == "http://www.sksit.com/studentprofiles") 
     { 
      HtmlElement el = webbrowser1.Document.GetElementById("studentinfotab"); 
      string info = el.InnerHtml; 
      string[] tableinfo = info.Split(' '); 
      DataRow trow = result.newDataRow(); 
      for(int j =0 ; j < tableinfo.Count() ; j++) 
      { 
      trow[j] = tableinfo[j]; 
      } 
      result.Rows.Add(trow); 

      //it should be something like this. 

      if(iCount < ids.Count){ 
      iCount ++; 
      webbrowser1.Navigate("http://www.sksit.com"); 
      } 

     } 
    } 
+0

感谢哥们。像Charm一样工作。你是救世主! @ sm.abdullah – Kon 2014-11-05 15:43:53