Silverlight 4,返回用户类列表

问题描述 投票:1回答:1

历史:我有一个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:\Users\me\Documents\Visual Studio 2010\Projects\SilverlightApplication1\SilverlightApplication1\Page1.xaml.cs    52    13    SilverlightApplication1

现在,我环顾四周,阅读并看到了很多东西,现在,这是一个非常相似的函数,只返回一个服务器名列表,有效。因为我猜它是String类型,但我知道它没有生成如何读取列表中的单个项目,但这是困扰我。我只想返回一个简单的东西列表。有人可以指点我正确的方向吗?

我确信这很简单。就像一个属性,或者其他东西,但这似乎很愚蠢,我找不到答案,善待,我只看了几个小时的Silverlight。

c# silverlight
1个回答
1
投票

遵循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;

如果你的列配置正确或设置为自动生成,那应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.