У меня есть веб-страница с #resultsDiv, которая создается динамически в зависимости от внутреннего запроса на значение в долларах и количества, ожидаемого с помощью разрывов страниц CSS, вставленных между данными каждого номера детали.В #resultsDiv может быть очень много или несколько страниц в зависимости от фильтра, который пользователь устанавливает.Он разработан таким образом, чтобы наша команда по инвентаризации могла распечатать одну страницу на номер детали для мест на нашем складе, где они могли бы найти эту деталь.
Моя проблема в том, что когда я нажимаю кнопку, чтобы напечатать страницы в div (код ниже), он показывает только первую страницу (это единственная страница, которую я не хочу печатать).И наоборот, если я щелкну правой кнопкой мыши и напечатаю, все страницы будут доступны для печати.
Я прочитал эти вопросы SO и попробовал большинство их решений безрезультатно: window.print () не печатает всю страницу
window.print () печатает только «видимую» часть экрана
ScriptManager.RegisterStartupScript codeне работает - почему?
Я также попробовал кое-что из предложенного здесь:
Расширенная печать CSS - Использование разрывов страниц CSS
Для справки вот запись MSDN для ScriptManager:
Метод ScriptManager.RegisterStartupScript
Вот обработчик нажатия:
protected void btnPrint_OnClick(object sender, EventArgs e)
{
if (!(ViewState["PartsToPrint"] is DataTable dt)) return;
DataView dv = new DataView(dt);
DataTable dtDistinctPartNumbers = dv.ToTable(true, "partNumber");
foreach (DataRow row in dtDistinctPartNumbers.Rows)
{
//pull out the data as needed from the datatable rows
string partNumber = row["partnumber"].ToString();
if (!dbf.IncrementPrintCount(GetSelectedOrganization(), partNumber))
{
setStatus(false, "Error saving print count");
}
}
ScriptManager.RegisterStartupScript(resultsDiv, GetType(), resultsDiv.UniqueID, "window.print();", true);
}
У меня также естьпробовал:
ScriptManager.RegisterStartupScript(this, typeof(Page), "Print", "window.print();", true);
ScriptManager.RegisterStartupScript(resultsDiv, typeof(Page), "Print", "window.print();", true);
И другие варианты, включая селектор Panel (div) для рендеринга ASP (см. CSS ниже), так что у меня заканчиваетсяидей.
Вот соответствующий CSS:
@media print {
body, html, #wrapper, #resultsDiv,
#ContentPlaceHolder1_resultsDiv {
height: 100%;
width: 100%;
}
p.pagebreakhere {
display: block;
page-break-before: always;
}
}
Мне нужно событие click, чтобыя должен напечатать все страниц, а не только первую страницу.Возможно, проще говоря, дайте мне точно такой же диалог, который я получаю, щелкнув правой кнопкой мыши и Распечатать.Чего мне не хватает?