2011-11-23 98 views
0

我消耗了web服务用于获取数据,我的成功完全找回数据如何根据检索的数据创建多个列表?

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ String username = txtblock4.Text.Trim(); 
String hash = txtblock8.Text.Trim(); 
client.UploadStringAsync(new  
Uri("http://www.picturelove.mobi/picturelove3/getmessages.php?loginType=N&email=" + 
username + "&hash=" + hash), "Post"); 
client.UploadStringCompleted += new 
UploadStringCompletedEventHandler(client_UploadStringCompleted); 
} 

我解析就像两个功能下面的XML响应保存的信息数据,并生成消息数据我正在刚开数据在一个列表中。

void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) 
{ 

if (e.Error != null) 
txtblock10.Text = e.Error.Message.Trim(); 
else 
txtblock10.Text = e.Result.Trim(); 
String XmlString = txtblock10.Text.Trim(); 
using (XmlReader reader = XmlReader.Create(new StringReader(XmlString))) 
{ 

while (reader.ReadToFollowing("all_messages")) 
{ 
while (reader.Read()) 
{ 
try 
{ 
reader.ReadToFollowing("id"); 
string id = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("from"); 
string n_from = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("to"); 
string n_to = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("time"); 
string n_time = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("sub"); 
string n_sub = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("ct"); 
string n_ct = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("txt"); 
string n_txt = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("msg_image"); 
string n_image = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("gender"); 
string n_gender = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("name"); 
string n_name = reader.ReadElementContentAsString(); 

reader.MoveToAttribute("avatar"); 
string n_avatar = reader.ReadElementContentAsString(); 
ObservableCollection<SampleData> dataSource = new ObservableCollection<SampleData>(); 
dataSource.Add(new SampleData() { Name = txtblock11.Text, Text = txtblock12.Text, 
Time= txtblock13.Text, Picture = txtblock9.Text }); 
// listBox.Items.Add(new SampleData() { Name = txtblock11.Text, Text = txtblock8.Text,     
Time = txtblock5.Text, Picture = txtblock12.Text }); 
SaveMessageData(new SampleData() { Name = txtblock11.Text, Text = txtblock12.Text, Time  
= txtblock13.Text, Picture = txtblock9.Text }); 
// listBox1.ItemsSource = 
this.GenerateMessageData(); 
} 
catch 
{ 
//MessageBox.Show("No New Messages For You", "No Message", MessageBoxButton.OK); 
break; 
} 
} 
} 
} 
} 
} 
public class SampleData 
{ 
public string Name { get; set; } 
public string Text { get; set; } 
public string Time { get; set; } 
public string Picture { get; set; } 
} 
public void SaveMessageData() 
{ 
using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
using (var isoStream = new IsolatedStorageFileStream("MyTextfile.txt", FileMode.Append,    
isoStorage)) 
    { 
XmlSerializer serializer = new XmlSerializer(typeof(List<SampleData>)); 
using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings)) 
{ 
List<SampleData> data = new List<SampleData>(); 
foreach (SampleData obj in Listbox.Items) 
{ 
data.Add(obj); 


} 

data.Add(msg); 
if (data != null) 
serializer.Serialize(xmlWriter, data); 

} 
} 
} 

} 
} 

public void GenerateMessageData() 
{ 

List<SampleData> data;// = new List<SampleData>(); 
try 
{ 
using (IsolatedStorageFile myIsolatedStorage =  
IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("MyTextfile.txt",  
FileMode.Open)) 
{ 
XmlSerializer serializer = new XmlSerializer(typeof(List<SampleData>)); 
data = (List<SampleData>)serializer.Deserialize(stream); 
this.Listbox.ItemsSource = data; 
return data; 
} 
} 
} 
catch (Exception exp) 
{ 
MessageBox.Show("No New Messages For You", "No Message", MessageBoxButton.OK); 
} 
return null; 
} 

但是,真正的问题是,如果有两个数据集(两个消息),如果我得到两者都显示相同的列表。如果有多个数据,如何操作或迭代多个列表?

回答

0

如果您需要合并两个列表,并且可能存在两个列表中的项目,但您只希望一次出现在合并列表中,那么最简单的解决方案是在添加它之前检查列表是否已经在列表中。

相关问题