我有一个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;以及如何在我的自定义适配器中处理它们(未知的字段名称和字段数)?
答案 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); });
}