ویرایش و به روز رسانی ستون های گرید ویو در Asp.Net با خاصیت AutoGenerateColumns
جمعه 5 تیر 1394در این مقاله قصد داریم ، بیاموزیم که چطور یک ستون خواندنی (ReadOnly) در گرید ویو را ویرایش کنیم
حال برای شروع به کار یک بانک اطلاعاتی در 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();
}
حال از برنامه اجرا بگیرید و داده های خود را ویرایش ، به روز رسانی و.. کنید

- ASP.net
- 5k بازدید
- 6 تشکر