چاپ مواردی که با استفاده از کادر انتخاب در کنترل DataList انتخاب می شوند با Asp.net
با سلام در این مقاله توضیح خواهیم داد که چگونه می توانیم فقط موارد DataList را که با استفاده از CheckBox انتخاب می کنند، چاپ کنیم.
بانک اطلاعاتی
برای این آموزش از پایگاه داده NorthWind استفاده میکنیم . شما می توانید از لینک زیردانلود کنید.
دانلود Northwind پایگاه داده
کد HTML
در زیر کنترل DataList که اطلاعات ارتباط از جدول مشتریان پایگاه داده Northwind و یک دکمه کنترل که آیتم های انتخاب شده DataList را چاپ میکند را نشان می دهد .
<form id="form1" runat="server">
<asp:DataList ID="dlContacts" runat="server" RepeatLayout="Table" RepeatColumns="3"
CellPadding="2" CellSpacing="2">
<ItemTemplate>
<table cellpadding="2" cellspacing="0" border = "1" style="width: 200px; height: 100px; border: dashed 2px #04AFEF;background-color: #B0E2F5">
<tr>
<td><asp:CheckBox ID="CheckBox1" runat="server" />
<b><u><%# Eval("ContactName") %></u></b></td>
</tr>
<tr>
<td>
<b>City: </b><%# Eval("City") %><br />
<b>Postal Code: </b><%# Eval("PostalCode") %><br />
<b>Country: </b><%# Eval("Country")%><br />
<b>Phone: </b><%# Eval("Phone")%><br />
<b>Fax: </b><%# Eval("Fax")%><br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<br />
<asp:Button ID="btnPrint" runat="server" Text="Print" OnClick = "Print" />
</form>
فضاهای نام
شما باید فضای نامهای زیر را وارد کنید
C #
using System.IO;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.Collections.Generic;
VB.Net
Imports System.IO
Imports System.Data
Imports System.Text
Imports System.Data.SqlClient
Imports System.Collections.Generic
اتصال به کنترل DataList
C #
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dlContacts.DataSource = this.GetData();
dlContacts.DataBind();
}
}
private DataTable GetData()
{
string conString = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand("select top 6 * from customers"))
{
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0];
}
}
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
dlContacts.DataSource = Me.GetData()
dlContacts.DataBind()
End If
End Sub
Private Function GetData() As DataTable
Dim conString As String = ConfigurationManager.ConnectionStrings("conStr").ConnectionString
Using con As New SqlConnection(conString)
Using cmd As New SqlCommand("select top 6 * from customers")
cmd.Connection = con
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
sda.Fill(ds)
Return ds.Tables(0)
End Using
End Using
End Using
End Function
چاپ داده های انتخاب شده DataList
هنگامی که دکمه Print کلیک می شود، رویداد handler زیر اجرا می شود. موارد کنترل شده یا انتخاب شده در کنترل DataList را بررسی می کند و موارد غیر قابل کنترل یا مواردی که انتخاب نشده اند را حذف می کند و سپس کنترل DataList را دوباره باز و در نهایت محتوای DataList را چاپ می کند.
C #
protected void Print(object sender, EventArgs e)
{
DataTable dt = GetData();
List<DataRow> rows = new List<DataRow>();
foreach (DataListItem item in dlContacts.Items)
{
if (!(item.FindControl("CheckBox1") as CheckBox).Checked)
{
rows.Add(dt.Rows[item.ItemIndex]);
}
}
foreach (DataRow row in rows)
{
dt.Rows.Remove(row);
}
dlContacts.DataSource = dt;
dlContacts.DataBind();
foreach (DataListItem item in dlContacts.Items)
{
item.FindControl("CheckBox1").Visible = false;
}
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
dlContacts.RenderControl(hw);
string html = sw.ToString().Replace("\"", "'").Replace(System.Environment.NewLine, "");
StringBuilder sb = new StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload = new function(){");
sb.Append("var printWin = window.open('', '', 'left=0");
sb.Append(",top=0,width=1000,height=600,status=0');");
sb.Append("printWin.document.write(\"");
sb.Append(html);
sb.Append("\");");
sb.Append("printWin.document.close();");
sb.Append("printWin.focus();");
sb.Append("printWin.print();printWin.opener.location.href=printWin.opener.location.href;");
sb.Append("printWin.close();};");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());
}
VB.Net
Protected Sub Print(sender As Object, e As EventArgs)
Dim dt As DataTable = GetData()
Dim rows As New List(Of DataRow)()
For Each item As DataListItem In dlContacts.Items
If Not TryCast(item.FindControl("CheckBox1"), CheckBox).Checked Then
rows.Add(dt.Rows(item.ItemIndex))
End If
Next
For Each row As DataRow In rows
dt.Rows.Remove(row)
Next
dlContacts.DataSource = dt
dlContacts.DataBind()
For Each item As DataListItem In dlContacts.Items
item.FindControl("CheckBox1").Visible = False
Next
Dim sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
dlContacts.RenderControl(hw)
Dim html As String = sw.ToString().Replace("""", "'").Replace(System.Environment.NewLine, "")
Dim sb As New StringBuilder()
sb.Append("<script type = 'text/javascript'>")
sb.Append("window.onload = new function(){")
sb.Append("var printWin = window.open('', '', 'left=0")
sb.Append(",top=0,width=1000,height=600,status=0');")
sb.Append("printWin.document.write(""")
sb.Append(html)
sb.Append(""");")
sb.Append("printWin.document.close();")
sb.Append("printWin.focus();")
sb.Append("printWin.print();printWin.opener.location.href=printWin.opener
.location.href;")
sb.Append("printWin.close();};")
sb.Append("</script>")
ClientScript.RegisterStartupScript(Me.[GetType](), "GridPrint", sb.ToString())
End Sub