2015-05-28 6 views
2

В jquery/javascript массив имеет следующую структуру. И я могу получить данные, используя данные [cartIndex] .rows [i].Ошибка загрузки и доступа к двумерному массиву

//cartIndex is anything from 0 to 10; 
//row is like [name, quantity, balance, remarks] 

for (var i=0; i < data[cartIndex].length; i++) { 
      var row = data[cartIndex].rows[i]; 
      alert(row.name, row.quantity, row.balance); 
} 

Я использовал список и массив для заполнения данных на C# и сериализовал его.


ОБНОВЛЕНО КОД:

 var arrList = new List<object>(); 

     string x = string.Empty; 
     int i = table.Rows.Count; 
     foreach (DataRow row in table.Rows) 
     { 
      string name = row[0].ToString(); 
      string quantity = row[1].ToString(); 
      string balance = row[2].ToString(); 
      string remove = "X"; 

      arrList.Add(new Wrapper { rows = new [] { name, quantity, balance, remove }}); 
     } 

     var maList = new List<object>(); 
     maList.Add(arrList);    
     return (new JavaScriptSerializer()).Serialize(maList); 

Но почему-то это не в правильном формате столбца строки в JavaScript.

data = [ 
     [[name, quantity, balance, remarks], 
      [name, quantity, balance, remarks], 
      [name, quantity, balance, remarks] 
     ], 
     [[name, quantity, balance, remarks], 
      [name, quantity, balance, remarks], 
      [name, quantity, balance, remarks] 
     ]   
     ] 

С этим, я не в состоянии получить доступ строки массива следующим образом:

var row = data[cartIndex].rows[i]; 
//row.name gives name, row.quantity gives quantity and so on 

Эта структура также должна позволять толкать строку в массив.

data[cartIndex].length++; 
data[cartIndex].rows.push({name: name, 
quantity: quantity, balance: blance}); 

Как я могу построить массив C# для доступа через индексы строк?

ответ

2

Вы можете получить доступ к данным во втором измерении, как это:

var name= data[cartIndex][0]; 
var quantiry = data[cartIndex][1]; 
// And so on... 

Свойства data[cartIndex].rows не будет работать, так как объект, который вы добавляете в список на стороне серверов не имеет свойства rows

в качестве альтернативы, вы можете изменить свой код сервера следующим образом:

// Add a new wrapper class 
public class Wrapper{ 
    public string[] rows{ get;set;} 
} 

И изменить строку, где вы добавляете строки в списке следующим образом:

alist.Add(new Wrapper { rows = new [] {name, quantity, balance, remove}}); 
+0

Из-за этого 'alist.Add (новый [] {наименование, количество, баланс, удалить});' – Xmindz

+0

Чтобы получить строки свойство работать, это должно быть что-то вроде ' alist.Add (new SomeWrapperClass {rows = new [] {имя, количество, баланс, удаление}}); ' – Xmindz

+0

Можете ли вы отредактировать свой ответ, чтобы включить код C#? Обязательно ли использовать класс Wrapper, не существует ли родной способ сформулировать массив, подобный этому, с строками на C#? Поскольку существуют функции, которые используют свойство rows alot в файле js 'data [cartIndex] .rows.push (' – aspiring

Смежные вопросы