JSON数据列表到组合框

时间:2015-12-20 11:54:31

标签: c# json.net

我知道这已被问过很多次了,我知道这将非常简单但是我真的很新C#而我正在拔头发,因为我一直在编码(不太好)通过晚。我有一个课程ProcessOrdersActive,我去了details Deserialiaze。当我尝试将ProcessOrderNbr[I]添加到组合框时,它正在崩溃。

//Deserialise data 
ProcessOrdersActive details = JsonConvert.DeserializeObject<ProcessOrdersActive>(responseBody);

var ordersList = new List<ProcessOrdersActive>();
ordersList.Add(details);
int numofitems = ordersList.Capacity;
txtActiveOrders.Text = numofitems.ToString();

for (int i = 0; i < numofitems; i++)
{
     comboBoxOrders.Items.Add (details.ProcessOrderNbr[i]);
}    

2 个答案:

答案 0 :(得分:0)

您正在尝试访问可能超出数组/列表范围的索引。

项目数应为您正在访问的阵列/列表的长度/计数。

//Deserialise data 
ProcessOrdersActive details = JsonConvert.DeserializeObject<ProcessOrdersActive>(responseBody);

var ordersList = new List<ProcessOrdersActive>(); 
ordersList.Add(details); 
int numofitems = details.ProcessOrderNbr.Count;//If this is a list use Count. If it is an array use Length 
txtActiveOrders.Text = numofitems.ToString();

for (int i = 0; i < numofitems; i++) {
     comboBoxOrders.Items.Add (details.ProcessOrderNbr[i]); 
}

答案 1 :(得分:0)

非常感谢您的回复。今天我和一位熟练的C#程序员聊了聊,这是他来的解决方案。名称与原帖略有不同。

//Deserialise data & send to DataGrid
ProcessOrderDetails details = JsonConvert.DeserializeObject<ProcessOrderDetails>(responseBody);
//Get number of operations and display to screen
int numofitems = details.MaterialList.Count<Materiallist>();
txtNumOfMaterials.Text = numofitems.ToString();
//Find the last operation
var lastone = details.MaterialList.Last<Materiallist>();
//Create a new material/operation list
var materialList = new List<Materiallist>();
//Add the last operation to the list
materialList.Add(lastone);
//Parse the list to the data grid
dataGridProcessOrderDetails.DataSource = materialList;