توضیحات و دانلود

خروج GridView های چندگانه به سند Word در ASP.Net
0 0
خروج GridView های چندگانه به سند Word در ASP.Net

با سلام در این مقاله چگونگی خروج GridView های متعدد به یک سند Word در asp.net  را توضیح میدهیم .

GridViews

در زیر کد HTML از دو GridViews می باشد .

<asp:GridView ID="GridView1" runat="server"

    AutoGenerateColumns = "false" Font-Names = "Arial"

    Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B" 

    HeaderStyle-BackColor = "green" AllowPaging ="true"  

    OnPageIndexChanging = "OnPaging">

   <Columns>

    <asp:BoundField ItemStyle-Width = "150px" DataField = "CustomerID"

       HeaderText = "CustomerID" />

    <asp:BoundField ItemStyle-Width = "150px" DataField = "City"

       HeaderText = "City"/>

   </Columns>

</asp:GridView>

<br /><br />

<asp:GridView ID="GridView2" runat="server"

    AutoGenerateColumns = "false" Font-Names = "Arial"

    Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B" 

    HeaderStyle-BackColor = "green" AllowPaging ="true"  

    OnPageIndexChanging = "OnPaging" >

   <Columns>

    <asp:BoundField ItemStyle-Width = "150px" DataField = "OrderID"

       HeaderText = "Order ID" />

    <asp:BoundField ItemStyle-Width = "150px" DataField = "CustomerID"

      HeaderText = "Customer ID"/>

   </Columns>

</asp:GridView>

فضاهای نام

شما باید فضای نامهای زیر را وارد کنید

C #

using System.IO;

using System.Text;

using System.Configuration;

VB.Net

Imports System.IO

Imports System.Text

Imports System.Configuration

رشته اتصال

کد زیر رشته اتصال مورد استفاده برای این آموزش است. همان طور که میبینید ، از Database NorthWind SQL Server Database استفاده می کنم که با کلیک روی اینجا  میتوانید آن را دانلود کنید

<connectionStrings>

  <add name="conString" connectionString="Data Source=.\SQLEXPRESS;

               database=Northwind;Integrated Security=true" />

</connectionStrings>

GridViews DataBinding

در کد زیر چگونگی اتصال دو GridView در رویداد Page Load را در صفحه وب ASP.Net قرار می دهیم و یک Query Query ساده را اجرا می کنیم و داده ها را به هر دو GridView با استفاده از تابع GetData مرتبط می کنیم .

C #

protected void Page_Load(object sender, EventArgs e)

{

    string strQuery = "select CustomerID,City,Country from customers";

    SqlCommand cmd = new SqlCommand(strQuery);

    DataTable dt = GetData(cmd);

    GridView1.DataSource = dt;

    GridView1.DataBind();

 

    strQuery = "select OrderID, CustomerID, EmployeeID from  Orders";

    cmd = new SqlCommand(strQuery);

    dt = GetData(cmd);

    GridView2.DataSource = dt;

    GridView2.DataBind();

}

 

private DataTable GetData(SqlCommand cmd)

{

    DataTable dt = new DataTable();

    String strConnString = ConfigurationManager

        .ConnectionStrings["conString"].ConnectionString;

    SqlConnection con = new SqlConnection(strConnString);

    SqlDataAdapter sda = new SqlDataAdapter();

    cmd.CommandType = CommandType.Text;

    cmd.Connection = con;

    try

    {

        con.Open();

        sda.SelectCommand = cmd;

        sda.Fill(dt);

        return dt;

    }

    catch (Exception ex)

    {

        throw ex;

    }

    finally

    {

        con.Close();

        sda.Dispose();

        con.Dispose();

    }

}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

   Dim strQuery As String = "select CustomerID,City,Country from customers"

   Dim cmd As New SqlCommand(strQuery)

   Dim dt As DataTable = GetData(cmd)

   GridView1.DataSource = dt

   GridView1.DataBind()

 

   strQuery = "select OrderID, CustomerID, EmployeeID from Orders"

   cmd = New SqlCommand(strQuery)

   dt = GetData(cmd)

   GridView2.DataSource = dt

   GridView2.DataBind()

End Sub

 

Private Function GetData(ByVal cmd As SqlCommand) As DataTable

   Dim dt As New DataTable()

   Dim strConnString As String = ConfigurationManager _

             .ConnectionStrings("conString").ConnectionString()

   Dim con As New SqlConnection(strConnString)

   Dim sda As New SqlDataAdapter()

   cmd.CommandType = CommandType.Text

   cmd.Connection = con

   Try

     con.Open()

     sda.SelectCommand = cmd

     sda.Fill(dt)

     Return dt

   Catch ex As Exception

     Throw ex

   Finally

     con.Close()

     sda.Dispose()

     con.Dispose()

   End Try

End Function

شکل زیر دو GridView را که ما با استفاده از پایگاه داده NorthWind ایجاد کردیم نمایش می دهیم.

مفهوم

حالا برای خروج GridView های متعدد شما باید GridView ها را در یک کنترل قرار دهید که به صورت یک ظرف عمل می کند و سپس آن کنترل را به جای GridViews خارج می کند. از این رو در اینجا یک جدول پویا جعلی  و به جای GridViews ایجاد می کنیم و جدول را خارج می کنیم.

گزینه پیمایش فعال کردن غیر فعال کردن و تراز کردن GridView

در اینجا امکانات کاربری را فراهم می کنیم که آیا کاربر رکوردهای کامل را میخواهد داشته باشد یا فقط سوابق برای صفحه فعلی.  همچنین انتخاب  دو GridView که باید به صورت افقی کنار یکدیگر قرار بگیرند یا به صورت عمودی  با استفاده از دو RadioButtonLists

<br />Paging Enabled?

<asp:RadioButtonList ID="rbPaging" runat="server">

<asp:ListItem  Text = "Yes" Value = "True" Selected = "True">

</asp:ListItem>

<asp:ListItem  Text = "No" Value = "False"></asp:ListItem>

</asp:RadioButtonList>

<br />

Export Preference

<asp:RadioButtonList ID="rbPreference" runat="server">

      <asp:ListItem  Text = "Vertical" Value = "1" Selected = "True">

</asp:ListItem>

      <asp:ListItem  Text = "Horizontal" Value = "2"></asp:ListItem>

</asp:RadioButtonList>

 در قسمت front end آنها را به شکل زیر نگاه می کنند. همانطور که می بینید کاربر می تواند چگونگی خروجی در سند مایکروسافت ورد را انتخاب کند.

خروج GridView های چندگانه

در قسمت نهایی دو GridViews را به مایکروسافت ورد سند بر روی دکمه Export Button خارج میکنیم . به کد زیر را مراجعه کنید

C #

protected void btnExportWord_Click(object sender, EventArgs e)

{

    Response.Clear();

    Response.Buffer = true;

 

    Response.AddHeader("content-disposition",

     "attachment;filename=GridViewExport.doc");

    Response.Charset = "";

    Response.ContentType = "application/vnd.ms-word";

    StringWriter sw = new StringWriter();

    HtmlTextWriter hw = new HtmlTextWriter(sw);

 

    GridView1.AllowPaging = Convert.ToBoolean(rbPaging.SelectedItem.Value);

    GridView1.DataBind(); 

    GridView2.AllowPaging = Convert.ToBoolean(rbPaging.SelectedItem.Value);

    GridView2.DataBind();

    Table tb = new Table();

    TableRow tr1 = new TableRow();

    TableCell cell1 = new TableCell();

    cell1.Controls.Add(GridView1);

    tr1.Cells.Add(cell1);

    TableCell cell3 = new TableCell();

    cell3.Controls.Add(GridView2);

    TableCell cell2 = new TableCell();

    cell2.Text = "&nbsp;";

    if (rbPreference.SelectedValue == "2")

    {

        tr1.Cells.Add(cell2);

        tr1.Cells.Add(cell3);

        tb.Rows.Add(tr1);

    }

    else

    {

        TableRow tr2 = new TableRow();

        tr2.Cells.Add(cell2);  

        TableRow tr3 = new TableRow();

        tr3.Cells.Add(cell3);

        tb.Rows.Add(tr1);

        tb.Rows.Add(tr2);

        tb.Rows.Add(tr3);

    }

    tb.RenderControl(hw);

 

    //style to format numbers to string

    string style = @"<style> .textmode { mso-number-format:\@; } </style>";

    Response.Write(style);

    Response.Output.Write(sw.ToString());

    Response.Flush();

    Response.End();

}

 

VB.Net

Protected Sub btnExportWord_Click(ByVal sender As Object, ByVal e As EventArgs)

    Response.Clear()

    Response.Buffer = True

 

    Response.AddHeader("content-disposition", _

          "attachment;filename=GridViewExport.doc")

    Response.Charset = ""

    Response.ContentType = "application/vnd.ms-word"

    Dim sw As New StringWriter()

    Dim hw As New HtmlTextWriter(sw)

   

    GridView1.AllowPaging = Convert.ToBoolean(rbPaging.SelectedItem.Value)

    GridView1.DataBind()

    GridView2.AllowPaging = Convert.ToBoolean(rbPaging.SelectedItem.Value)

    GridView2.DataBind()

    Dim tb As New Table()

    Dim tr1 As New TableRow()

    Dim cell1 As New TableCell()

    cell1.Controls.Add(GridView1)

    tr1.Cells.Add(cell1)

    Dim cell3 As New TableCell()

    cell3.Controls.Add(GridView2)

    Dim cell2 As New TableCell()

    cell2.Text = "&nbsp;"

    If rbPreference.SelectedValue = "2" Then

       tr1.Cells.Add(cell2)

       tr1.Cells.Add(cell3)

       tb.Rows.Add(tr1)

    Else

       Dim tr2 As New TableRow()

       tr2.Cells.Add(cell2)

       Dim tr3 As New TableRow()

       tr3.Cells.Add(cell3)

       tb.Rows.Add(tr1)

       tb.Rows.Add(tr2)

       tb.Rows.Add(tr3)

    End If

    tb.RenderControl(hw)

 

    'style to format numbers to string

    Dim style As String = "<style> .textmode { mso-number-format:\@; } </style>"

    Response.Write(style)

    Response.Output.Write(sw.ToString())

    Response.Flush()

    Response.End()

End Sub

یک جدول دینامیکی ایجاد می کنیم و GridView ها را به سلول های جدول دینامیک اضافه می کنیم . سپس جدول را به جای GridViews ارائه می دهیم، این خروج از دو یا چند GridView به یک سند مایکروسافت ورد است .

Screenshots زیر GridViews در تنظیمات افقی و عمودی را نمایش می دهد

 

چیدمان عمودی

ترازبندی افقی

شما ممکن است خطاهای زیر را دریافت کنید. برای حل این مشکل، روی لینک زیر کلیک کنید .
RegisterForEventValidation را فقط می توان در (Render) نامگذاری کرد

کنترل 'GridView1' از نوع 'GridView' باید داخل یک تگ فرم با runat = server قرار گیرد.

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :