DataList 加入列印斷頁符號

April 21, 2011 0 Comments

一般來說Datalist Control並沒有可分頁的選項, 特別是在要印出來的時候如果沒有很好的分頁很容易造成美觀上的問題. 透過CSS的page-break-after (or before) 可以讓browser列印輸出讀到該行時斷頁.

假設我的Datalist 有兩個columns :
<asp:datalist &nbsp;repeatdirection="Horizontal" cellpadding="4" id="DataList1" 
repeatcolumns="2" runat="server"></asp:datalist>


我要在每列印六個row後進行分頁, 在DataList1_ItemDataBound中加入:

If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim sp As New Literal
sp.Text = "</td><tr><td colspan='2'><div style='page-break-after:always'></div></td></tr><tr><td colspan='2'>"
If e.Item.ItemIndex = 11 Or e.Item.ItemIndex = 23 Or e.Item.ItemIndex = 35 Then
e.Item.Controls.Add(sp)
End If
End If
OK, 到這邊基本上分頁斷行就加入完成了, 但是我列印的時候只想列印DataList的部分, 所以我又加了一段javascript程式碼:

<script language="javascript">
function PrintDataList(StrID) {

var prtContent = document.getElementById(StrID);
var WinPrint = window.open('', '', 'left=0,top=0,width=800,height=400,toolbar=no,scrollbars=auto,status=0');
WinPrint.document.write(prtContent.innerHTML);
WinPrint.document.close();
WinPrint.focus();
WinPrint.print();
WinPrint.close();

}
</script>
加個列印的Button把Datalist的clientID丟入就可以了!

0 comments: