Silverlight 4,返回用户类列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Silverlight 4,返回用户类列表相关的知识,希望对你有一定的参考价值。
历史:我有一个php的小网站,我想为它做一个更好的前端。环顾四周,花了一个小时左右的每个FlashBuilder等,我发现Silverlight 4是最快的,但我遇到了一个问题。
我有一个简单的课程
public partial class data
{
public String Software;
public int OK;
public int warn;
public int falsepos;
public int failed;
public int total;
}
然后我使用对我的服务的调用加载类,如下所示:
[OperationContract]
public List<data> GetSum(){
String sql="SELECT Software, OK, warn, falsepos, failed from sum";
List<data> res = new List<data>();
if (!DBConnect()) { throw new Exception("Unable to contact Database"); }
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(sql, _sqlConnection);
DataSet ds = new DataSet();
da.Fill(ds);
_sqlConnection.Close();
foreach (DataRow dr in ds.Tables[0].Rows)
{
data d = new data();
d.Software = dr["software"].ToString();
d.OK = Int16.Parse(dr["OK"].ToString());
d.warn = Int16.Parse(dr["Warning"].ToString());
d.falsepos = Int16.Parse(dr["False Positive"].ToString());
d.failed = Int16.Parse(dr["Failed"].ToString());
d.total = d.OK+d.warn+d.falsepos+d.failed;
res.Add(d);
}
return res;}
现在,编译很好,除了,当我添加foreach
时,它开始分崩离析,
private void Summary(object Sender, ServiceProxy.GetSumCompletedEventArgs e)
{
foreach (data d in e.Result)
{
}
}
它说,当我去解析清单的那一刻
Error 2 foreach statement cannot operate on variables of type 'SilverlightApplication1.ServiceProxy.GetSumResponse' because 'SilverlightApplication1.ServiceProxy.GetSumResponse' does not contain a public definition for 'GetEnumerator' C:UsersmeDocumentsVisual Studio 2010ProjectsSilverlightApplication1SilverlightApplication1Page1.xaml.cs 52 13 SilverlightApplication1
现在,我环顾四周,阅读并看到了很多东西,现在,这是一个非常相似的函数,只返回一个服务器名列表,有效。因为我猜它是String类型,但我知道它没有生成如何读取列表中的单个项目,但这是困扰我。我只想返回一个简单的东西列表。有人可以指点我正确的方向吗?
我确信这很简单。就像一个属性,或者其他东西,但这似乎很愚蠢,我找不到答案,善待,我只看了几个小时的Silverlight。
答案
遵循this answer的路线
你可以试试
[DataContract]
public class DataResult
{
[DataMember]
public List<data> DataList{ get; set; }
DataResult(List<data> dataList)
{
DataList = dataList;
}
}
[OperationContract]
public List<data> GetSum(){
...
...
return DataResult(res);
}
private void Summary(object Sender, ServiceProxy.GetSumCompletedEventArgs e)
{
foreach (data d in e.Result.DataList)
{
}
}
并且可以将列表显示到网格中
DataGrid1.ItemsSource = e.Result.DataList;
如果你的列配置正确或设置为自动生成,那应该这样做。
以上是关于Silverlight 4,返回用户类列表的主要内容,如果未能解决你的问题,请参考以下文章