ورود / ثبت نام
0
0

کپی کردن داده ها از اکسل در GridView در ASP.NET

257 بازدید
GridView در ASP.NET

GridView در ASP.NET

در این مقاله برایتان توضیح خواهم داد که چگونه میتوانید داده ها را از یک فایل Excel یا Clipboard در GridView در ASP.NET با استفاده از C# و VB.NET کپی کنید.نمیتوانیم داده های کپی شده از فایل Excel یا ClipCoard را در GridView بیاندازیم از این رو باید داده ها را در یک TextBox چند خطی ASP.NET یا TextArea بیاندازیم و سپس GridView را پر کنیم. در ادامه ی این مقاله با من همراه باشید …

HTML Markup

HTML Markup دارای یک GridView و TextBox چند خطی است که رویداد OnTextChanged آن معین شده باشد و خاصیت AutoPostBack آن نیز بر روی true تنظیم شده است.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
    <asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="30" />
    <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
    <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="150" />
</Columns>
</asp:GridView>
<br />
<asp:TextBox ID="txtCopied" runat="server" TextMode="MultiLine" AutoPostBack="true"
OnTextChanged="PasteToGridView" Height="200" Width="400" />

 

اجرای کنترل کننده ی رویداد OnPaste :

در داخل پنجره ی کنترل کننده ی رویداد onload ، یک کنترل کننده ی رویداد OnPaste پویا به TextBox چند خطی ASP.NET تعین شده است. بنابراین به محض اینکه بتوانیم چیزی را بیاندازیم ، یک PostBack انجام میدهد و کنترل کننده ی رویداد OnTextChanged قسمت TextBox چند خطی فعال میشود.

<script type="text/javascript">
window.onload = function () {
    document.getElementById("<%=txtCopied.ClientID %>").onpaste = function () {
        var txt = this;
        setTimeout(function () {
            __doPostBack(txt.name, '');
        }, ۱۰۰);
    }
};
</script>

 

فضای نام ها

احتیج به افزودن فضای نام های زیر دارید.

C#

using System.Data;

 

VB.NET

Imports System.Data

 

پر کردن GridView از داده های کپی شده ی ClipBoard

به محض آنکه چیزی در TextBox چند خطی انداخته شود ، کنترل کننده ی رویداد زیر فعال میشود.

ابتدا یک جدول داده میسازد و سپس محتوای کپی شده با استفاده از خطوط جدید و کاراکتر های Tabجدا شده و با استفاده از حلقه داده ها در جدول داده ها ذخیره میشود.

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

نکته :

ساختار ستون Excel و جدول داده ها باید برابر باشند. در غیر اینصورت این کد کار نمیکند.

C#

protected void PasteToGridView(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
                    new DataColumn("Name", typeof(string)),
                    new DataColumn("Country",typeof(string)) });
 
    string copiedContent = Request.Form[txtCopied.UniqueID];
    foreach (string row in copiedContent.Split('\n'))
    {
        if (!string.IsNullOrEmpty(row))
        {
            dt.Rows.Add();
            int i = 0;
            foreach (string cell in row.Split('\t'))
            {
                dt.Rows[dt.Rows.Count - 1][i] = cell;
                i++;
            }
        }
    } 
    GridView1.DataSource = dt;
    GridView1.DataBind();
    txtCopied.Text = "";
}

 

VB.NET

Protected Sub PasteToGridView(sender As Object, e As EventArgs)
    Dim dt As New DataTable()
    dt.Columns.AddRange(New DataColumn(2) {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String)), New DataColumn("Country", GetType(String))})
 
    Dim copiedContent As String = Request.Form(txtCopied.UniqueID)
    For Each row As String In copiedContent.Split(ControlChars.Lf)
        If Not String.IsNullOrEmpty(row) Then
            dt.Rows.Add()
            Dim i As Integer = 0
            For Each cell As String In row.Split(ControlChars.Tab)
                dt.Rows(dt.Rows.Count - 1)(i) = cell
                i += 1
            Next
        End If
    Next
    GridView1.DataSource = dt
    GridView1.DataBind()
    txtCopied.Text = ""
End Sub

 

کد بالا در مرورگر های IE ، FireFox ، Opera و Chrome تست شده است.

نظرات و پیشنهادات خودتان را با من در میان بگذارید.

موفق باشید.

  • پسورد: www.mspsoft.com
آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=14656
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

0 نظر در مورد کپی کردن داده ها از اکسل در GridView در ASP.NET

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی نوشته نشده است.