tl; dr
Map
s. ECMAScript 5:
Нет, это невозможно с объектами.
Вы должны либо итерации с помощью for..in
, либо Object.keys
, как это
for (var key in dictionary) {
// check if the property/key is defined in the object itself, not in parent
if (dictionary.hasOwnProperty(key)) {
console.log(key, dictionary[key]);
}
}
Примечание: Условие if
, указанное выше, необходимо, только если вы хотите итерировать свойства, которые являются dictionary
самим объектом. Поскольку for..in
будет перебирать все унаследованные перечислимые свойства.
Или
Object.keys(dictionary).forEach(function(key) {
console.log(key, dictionary[key]);
});
ECMAScript 2015
В ECMAScript 2015 вы можете использовать Map
объектов и итерации их с помощью Map.prototype.entries
. Пример цитаты из этой страницы,
var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");
var mapIter = myMap.entries();
console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]
Или итерации с помощью for..of
, как это
'use strict';
var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");
for (const entry of myMap.entries()) {
console.log(entry);
}
Выход
[ '0', 'foo' ]
[ 1, 'bar' ]
[ {}, 'baz' ]
Или
for (const [key, value] of myMap.entries()) {
console.log(key, value);
}
Выход
0 foo
1 bar
{} baz
ECMAScript 2017
В ECMAScript 2017 будет введена новая функция Object.entries
. Вы можете использовать это для итерации объекта по своему желанию.
'use strict';
const object = {'a': 1, 'b': 2, 'c' : 3};
for (const [key, value] of Object.entries(object)) {
console.log(key, value);
}
Выход
a 1
b 2
c 3
На работе мы делаем это путем продвижения изображения (изображений) в отчет как поля таблицы данных. Это не симпатично, но это сделало задание. Конечно, это решение требует, чтобы Вы продвинули данные в отчеты через DataSet. Я всегда чувствовал, что это было взломом в лучшем случае Мне действительно жаль, что параметры изображения не были возможностью с CR.
Править: Это стоит отметить при привязке кристаллического отчета простым объектам, Вы хотите выставить байт [] свойство для отчета рассматривать это как изображение.
Я наконец достиг решения с помощью byte[]
подсказка, отправленная здесь Josh.
Это решение применяется при использовании простого Объекта C# заполнить Crystal Reports (см. http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-in-CSharp/ для получения информации об этом подходе).
В Вашем классе C# введите следующий код:
private static byte[] m_Bitmap = null;
public byte[] Bitmap
{
get
{
FileStream fs = new FileStream(bitmapPath, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
int length = (int)br.BaseStream.Length;
m_Bitmap = new byte[length];
m_Bitmap = br.ReadBytes(length);
br.Close();
fs.Close();
return m_Bitmap;
}
}
Теперь, обновите свой Объект C#, Отображающийся в CR использование опции "Verify Database". Необходимо затем видеть Bitmap
свойство как поле CR. Просто перетащите его на форму. Это будет иметь тип IBlobFieldObject. Когда Вы работаете, необходимо видеть изображение.
У меня также был этот вопрос (и проголосовал за Ваш)!
[Я с тех пор нашел, что решение с помощью массива байтов через Свойство объекта C# - видит отдельный Ответ. Отъезд этого ответа здесь для ссылки...]
Вот то, что я видел предложенный (но я попробовал и отказавший и в C#-2005 и в C#-2008).
У меня не было удачи с этим подходом. Изображение появляется, когда я сначала разрабатываю форму (шаг 2). Но во времени выполнения, изображение не обновляет для меня. От этой точки вперед, вещи становятся действительно нечетными. Кажется, что кэши CR своего рода изображение, которое просто не уйдет. Я могу удалить ссылку Объекта OLE в CR-разработчике, но если я воссоздаю ее, я всегда получаю черный квадрат тот же размер как исходное изображение (даже если я изменяю размер image.bmp).
Попытайтесь использовать комбинацию использования параметра, содержащего путь изображения и учебного руководства на этой странице: http://www.idautomation.com/crystal/streaming_crystal.html
Тогда на шаге № 8, используйте параметр вместо трудно кодированного пути.
Точно так же, как Josh сказал.. Необходимо будет продвинуть изображение с набором данных. Или, поместите изображение в таблицу базы данных однажды и втягивайте его много раз с подчиненным отчетом.
Вы также можете использовать условную формулу для определения местоположения изображения. См. Crystal Reports: динамические изображения .