Я бы удалил виртуальные коллекции и объекты из всех трех классов, а затем удалил поле Id (при условии, что это первичный ключ) в таблице OrganisationLocations. Поля OrganisationId и LocationId в OrganisationLocations должны быть как первичными ключами, так и внешними ключами, чтобы сделать связь «многие ко многим» между OrganisationLocations, Locations и Organization. Затем вы можете использовать Linq, чтобы выполнить простой запрос на соединение, чтобы получить информацию, которую вы ищете. Например:
var orgs = (from ol in PfApiContext.OrganisationLocations
inner join o in PfApiContext.Organisation on o.Id equals ol.OrganisationId
inner join l in PfApiContext.Locations on ol.LocationId equals l.Id
where ol.LocationId = 1
select new Organisation()
{
Id = o.Id,
Name = o.Name,
Owner = o.Ower,
etc...
}
Сделайте таблицу стилей печати, где все элементы кроме текстовой области установлены в CSS отобразиться:ничего;, и для текстовой области, переполнения: видимый.
Свяжите его со страницей с тегом link в наборе заголовка к медиа = "печать".
Вы сделаны.
Если пользователь нажимает "Print", Вы могли бы открыть новое окно только с содержанием текстовой области на пустой странице и начатой печати оттуда, то закрыть то окно.
Обновление: Я думаю, что предлагаемыми решениями CSS являются, вероятно, лучшие стратегии, но если кому-либо нравится это предложение, они могут все еще upvote оно.
Сделайте другой CSS с набором носителей для печати
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
Я пошел бы для комбинации других предложений.
Не уничтожайте кнопку печати для целой страницы с переопределением таблицы стилей, но вместо этого обеспечивайте кнопку текстовой областью, которая позволяет пользователю распечатать только то содержание.
Та кнопка открыла бы новое окно, с меню/хромом и т.д. и клонировала бы содержание текстовой области только (и или обеспечила бы файл CSS печати),
Я сделал печатные СМИ CSS для сокрытия многих полей. Проблема была осложнена тем, что я использовал nicEdit, который динамично создает IFRAME. Таким образом, я должен был добавить событие, которое взяло onblur события и скопировало их в скрытое (за исключением печати), Отделение "divtext" является hiddent Отделением, и "storyText" является TextArea.
textarea {
display: none;
}
*/ #divtext {
display: block;
}
div, DIV {
border-style: none !important;
float: none !important;
overflow: visible !important;
display: inline !important;
}
/* disable nearly all styles -- especially the nicedit ones! */
#nav-wrapper, #navigation, img, p.message, .about, label, input, button, #nav-right, #nav-left, .template, #header, .nicEdit-pane, .nicEdit-selected, .nicEdit-panelContain, .nicEdit-panel, .nicEdit-frame {
display: none !important;
}
/*hide Nicedit buttons */
.nicEdit-button-active, .nicEdit-button-hover, .nicEdit-buttonContain, .nicEdit-button, .nicEdit-buttonEnabled, .nicEdit-selectContain, .nicEdit-selectControl, .nicEdit-selectTxt {
display: none !important;
}
Код JavaScript для nicEdit:
<script type="text/javascript" src="/media/nicEdit.js"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function () {
var nic = new nicEditor({
fullPanel: true
}).panelInstance('storyText');
document.getElementById("storyText").nic = nic;
nic.addEvent('blur', function () {
document.getElementById("storyText").value =
nic.instanceById('storyText').getContent();
document.getElementById("divtext").innerHTML = nic.instanceById('storyText').getContent();
});
});
</script>
Произошло ли переполнение: visible; на textarea действительно работает для любого из вас? FF3, похоже, игнорирует это правило для текстового поля в печатных листах. Не то чтобы это ошибка или что-то в этом роде.