Стоит посмотреть в Rock Solid addEvent () и http://www.braksator.com/how-to-make-your-own-jquery .
Вот код на случай, если сайт выйдет из строя
function addEvent(obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
EventCache.add(obj, type, fn);
}
else if (obj.attachEvent) {
obj["e"+type+fn] = fn;
obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
EventCache.add(obj, type, fn);
}
else {
obj["on"+type] = obj["e"+type+fn];
}
}
var EventCache = function(){
var listEvents = [];
return {
listEvents : listEvents,
add : function(node, sEventName, fHandler){
listEvents.push(arguments);
},
flush : function(){
var i, item;
for(i = listEvents.length - 1; i >= 0; i = i - 1){
item = listEvents[i];
if(item[0].removeEventListener){
item[0].removeEventListener(item[1], item[2], item[3]);
};
if(item[1].substring(0, 2) != "on"){
item[1] = "on" + item[1];
};
if(item[0].detachEvent){
item[0].detachEvent(item[1], item[2]);
};
item[0][item[1]] = null;
};
}
};
}();
// Usage
addEvent(window, 'unload', EventCache.flush);
addEvent(window, 'load', function(){alert("I'm ready");});
Я видел, как мой коллега использовал Active Reports (и любой построитель отчетов мог бы это сделать), генерировал отчет, экспорт в изображение (1 страница = 1 изображение) и загружал отдельные изображения в FlowDocument. Тогда у вас были бы встроенные функции для перемещения вперед и назад, масштабирования и все те качества, которые предоставляет FlowDocument.
Я знаю этот обходной путь, но это решение имеет 2 преимущества: 1) вы не привязаны к какому-либо конкретному построителю отчетов и 2) вам не нужно использовать WindowsFormsHost, который вы не можете использовать в сценариях с частичным доверием.
Взгляните на инфраструктура . В их библиотеке WPF NetAdvantage есть полное решение для отчетов WPF.
Два готовых варианта в Visual Studio (Pro и выше): Crystal Reports ИЛИ SQL Server Reports (SSRS)
In WPF you can host the crystal report viewer or the SSRS viewer inside the windows forms host control.