我有一个网页,它将我带到另一个页面,其中包含有关按学生ID搜索的学生信息。我有一份学生ID列表。我应该从第二页检索学生信息并将其存储在数据表中。这是代码
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 :(得分: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");
}
}
}