2013-03-09 4 views
0

У меня есть DataSet, который я получаю из веб-службы, с которой я заполняю 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 и т. Д. Как бы я повторял строки «динамически» и как тогда я общаюсь с ними в своем пользовательском адаптере (неизвестное имя поля и подсчет полей)?

+0

Может быть я отсутствующий что-то здесь, но вы не можете просто указать индекс столбца? –

+0

Можете ли вы уточнить свой вопрос? Что ты пытаешься сделать? Показать все данные или только некоторые из них? – Shy

+0

Я хотел анонимное зондирование DataSet. Я ответил на мой вопрос ниже :) –

ответ

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); }); 
} 
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); 
} 
Смежные вопросы