ویرایش و به روز رسانی ستون های گرید ویو در 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 تشکر