使用数据集行

时间:2013-03-09 21:37:47

标签: c# dataset xamarin.android rows loops

我有一个DataSet,我从一个webservice获取,我用它来填充listview。到目前为止,我一直在这样做:

foreach (DataRow row in dsGetAvailUsers.Tables[0].Rows) 
{
var item = new User();
item.sUserId = row ["sUserId"].ToString ();
item.UserDesc = row ["UserDesc"].ToString ();
item.UserIMG = row ["UserIMG"].ToString ();

listUsers.Add(item);
}

但是因为我知道每个字段的名称,因为它是一个包含固定数据和字段名称的列表。

但现在我得到的列表一次有10个字段,每个项目一次有12个,等等。 我将如何动态地遍历行"#34;以及如何在我的自定义适配器中处理它们(未知的字段名称和字段数)?

2 个答案:

答案 0 :(得分:0)

这样做

foreach (DataRow row in dsGetAvailUsers.Tables[0].Rows) 
{
var item = new User();

 for (int j = 0; j < dsGetAvailUsers.Tables[0].Columns.Count; j++)
 {
   if(dsGetAvailUsers.Tables[0].Columns[j].ColumnName == "sUserId")
      item.sUserId = row ["sUserId"].ToString ();
   else if(dsGetAvailUsers.Tables[0].Columns[j].ColumnName == "UserDesc")
      item.UserDesc= row ["UserDesc"].ToString ();
   .....
 }


listUsers.Add(item);
}

答案 1 :(得分:0)

解决所有问题的代码......

foreach (DataRow row in dsGetAvailUsers.Tables[0].Rows)
{
    var item = new Dokument();
    int i = 0;
    item.Label = new Hashtable();
    item.array = new Hashtable();
    foreach (DataColumn _col in dsGetAvailUsers.Tables[0].Columns) 
    {
        item.Label.Add(i, _col.ColumnName);
        item.array.Add(_col.ColumnName,row[i].ToString());
        ++i;
    }
    listDokument.Add(item);
    RunOnUiThread (() => {DokumentAdapter.Add (item); });
}