ویرایش و به روز رسانی ستون های گرید ویو در Asp.Net با خاصیت AutoGenerateColumns

جمعه 5 تیر 1394

در این مقاله قصد داریم ، بیاموزیم که چطور یک ستون خواندنی (ReadOnly) در گرید ویو را ویرایش کنیم

ویرایش و به روز رسانی ستون های گرید ویو در Asp.Net با خاصیت AutoGenerateColumns

حال برای شروع به کار یک بانک اطلاعاتی در SQL Server  به نام AjaxSamples  و یک جدول به نام Customers  ایجاد میکنیم

Create DataBase AjaxSamples
use AjaxSamples

SET ANSI_NULLS ON
GO


SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Customers](
	[CustomerId] [int] NOT NULL,
	[Name] [varchar](100) NOT NULL,
	[Country] [varchar](50) NOT NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

به صورت دستی در آن داده ثبت کنید.

حال ویژوال استادیو را باز کرده ویک پروژه از نوع Asp.Net ایجاد کنید .

روی اسم پروژه راست کلیک کرده ودر Add>NewItem<WebFrom  به نام Cs.aspxایجاد کنید

حال از ToolBax یک کنترل گرید به صفحه cs.aspx  بندازید

حال چند خاصیت  از گرید را برابر با true قرار میدهیم

1:خاصیت AutoGenerateColumns=true

2: خاصیت AutoGenerateEditButton=true برا ی ایجاد دکمه ویرایش بر روی گریدیو

و همچنین خاصیت های OnRowEditing, OnRowCancelingEdit و OnRowUpdating events را مشخص میکنیم

<asp:GridView ID="GridView1" runat="server" DataKeyNames="CustomerId" OnRowEditing="OnRowEditing" OnRowCancelingEdit="OnRowCancelingEdit" OnRowUpdating="OnRowUpdating" AutoGenerateEditButton="true">
</asp:GridView>

در این پارت از آموزش برای اتصال به بانک اطلاعاتی از روش Ado.Net استفاده کرده ایم حال در صفحه دستورات و منطق برنامه رفته و فضای نام های زیر را به برنامه خود اضافه کنید

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

حال نوبت به  پر کردن گرید ویو با خاصیت AutoGenerateColumns میرسد

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindGrid();
    }
}
 
private void BindGrid()
{
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT CustomerId, Name, Country FROM Customers"))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }
            }
        }
    }
}

همان طور که مشاهده میکنید یک تابع bind ایجاد کرده ایم که برای  انتخاب رکورد از بانک اطلاعاتی  و فراخوانی در تابع load صفحه ، استفاده شده است.

حال اگر از برنامه اجرا بگیرید میتوان داده هایی را که در بانک اطلاعاتی  به صورت دستی ثبت کردید را مشاهده کنید

ویرایش:

وقتی که شما دکمه ویرایش را میزنید رویداد   OnRowEditing بایستی فراخوانی شود در این جا به راحتی از خاصیت EditIndex  خود گرید ویو استفاده میکنیم و ردیف هایی را که میخواهیم ویرایش میکنیم

و سپس برای آن که اطلاعاتی که ویرایش کردیم در گرید همان لحظه به نمایش درآید تابع BindGrid
 فراخوانی میکنیم

protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    this.BindGrid();
}

به روز رسانی :

برای به روز رسانی اطلاعات از رویداد OnRowUpdating  استفاده میکنیم

rotected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = GridView1.Rows[e.RowIndex];
    int customerId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
    string name = (row.Cells[2].Controls[0] as TextBox).Text;
    string country = (row.Cells[3].Controls[0] as TextBox).Text;
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("UPDATE Customers SET Name = @Name, Country = @Country WHERE CustomerId = @CustomerId"))
        {
            cmd.Parameters.AddWithValue("@CustomerId", customerId);
            cmd.Parameters.AddWithValue("@Name", name);
            cmd.Parameters.AddWithValue("@Country", country);
            cmd.Connection = con;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
    GridView1.EditIndex = -1;
    this.BindGrid();
}

منصرف:

وقتی از دکمه کنسل استفاده میکنیم رویدادOnRowCancelingEdit  در گرید ویو فعال میشود  که خاصیت EditIndex را برابر با -1 قرار میدهیم

protected void OnRowCancelingEdit(object sender, EventArgs e)
{
    GridView1.EditIndex = -1;
    this.BindGrid();
}

 حال از برنامه اجرا بگیرید و داده های خود را ویرایش ، به روز رسانی و.. کنید

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید