1

リストビューに入力する Web サービスから取得した DataSet があります。これまでのところ、私は次のようにしています。

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);
}

しかし、それは固定データとフィールド名のリストだったので、各フィールドの名前を知っていたので、それは vas でした。

しかし今、アイテムごとに10個のフィールドと12個のフィールドを持つリストを取得しています.行を「動的に」反復する方法と、カスタムアダプターでそれらを処理する方法(不明なフィールド名とフィールド数)?

4

2 に答える 2

1

これを行う

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);
}
于 2013-03-09T22:50:08.803 に答える
1

すべてを解決するコード...

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); });
}
于 2013-03-14T09:52:29.933 に答える