在gridview中合并结果
本文关键字:结果 合并 gridview | 更新日期: 2023-09-27 18:06:30
我有一个应用程序,我想从一个应用程序下载不同用户的推文:
DataTable dt = obj.GetTableSP("GetAllBioOrderByNewest");
foreach (DataRow dr in dt.Rows)
{
WebClient wb = new WebClient();
Uri myUri = new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?include_entities=true&include_rts=true&count=10&screen_name=" + dr["TwitterHandle"].ToString());
wb.DownloadStringAsync(myUri);
wb.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wblastID_DownloadStringCompleted);
}
和这里我是如何绑定结果在gridview:
public void wblastID_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs args)
{
try
{
XElement xmlTweets = XElement.Parse(args.Result);
GridView1.DataSource = (from tweet in xmlTweets.Descendants("status")
select new Tweet
{
ID = tweet.Element("id").Value,
Message = tweet.Element("text").Value,
UserName = tweet.Element("user").Element("screen_name").Value,
TwitTime = tweet.Element("created_at").Value
}).ToList();
GridView1.DataBind();
if (GridView1.Rows.Count < 10)
{
viewmore.Visible = false;
}
}
catch
{
MessageBox.Show("Error downloading tweets");
}
}
但是这里的问题是,我只从数据表中得到最后一个用户的tweet。
我想要的是,从dt
的所有用户的组合结果,并显示在gridview。
不要在wblastID_DownloadStringCompleted
事件中绑定你的网格,因为你在foreach
循环中调用它,所以在每次迭代中它都绑定了新的细节。你必须创建一个新的集合(list
或datatable
),然后在foreach
循环绑定你的gridview与新的集合。
我会从您的wblastID_DownloadStringCompleted方法中删除所有gridview调用。相反,使用一个公共属性作为数据表。由于for语句调用wblastID_DownloadStringCompleted方法,因此只需附加数据表。for语句完成后,就是绑定数据源的时候了。一些伪代码:
someMethod
for each twitterName as strin in myTable
dim myFoundTweets as datatable
dim myTweetName as string = "Your API Call To Get The name"
myFoundTweets = addMe(myFoundTweets , myTweetName )
next
'now bind the source
end Metod
private sub addMe(byval myTweetName as string, byVal myTable as table)
'parse the string here
'add the values to a table or list of object
'return it
end sub
如果你需要一个更具体的例子,请告诉我