حذف GridView با نمایش پیغام تایید در ASP.Net
چهارشنبه 27 خرداد 1394در این مقاله یک مثال در مورد حذف داده توسط GridView در ASP.Net آموزش خواهم داد که قبل از حذف آن توسط متد confrim یک پیغام تایید دریافت می کند، این متد جاوا اسکریپ می باشد که برای نمایش دریافت تایید از کاربر می باشد گرافیک این پیغامها هم وابسته به مرورگر هستند و قابل تغییر نیستند . متن عنوان و دکمهها هم با توجه به زبان سیستم عامل تعیین میشوند و قابل تغییر توسط برنامه نویس نیستند.
در این مقاله استفاده از خاصیت AutoGenerateDeleteButton در GridView وخاصیت AutoGenerateColumns را توسط#C و VB.Net برابر true قرار میدهدو همچنین وقتی که خاصیتAutoGenerateDeleteButton را true قرار میدهیم با نمایش پیغام تایید جاوااسکریپ ، رکورد در GridView حذف می شود.
در مرحله اول باید بانک اطلاعاتی را بسازیم که از ساختار جدول زیر به نام Customers استفاده کنید:
اطلاعات را در جدول وارد کنید به عنوان مثال جدول زیر را مشاهد نمایید :
در صفحه HTML شامل یک کنترل GridView با خصوصیت AutoGenerateColumns برابر true قرار میدهیم و به صورت اتوماتیک دکمه(button) حذف ایجاد میکند که خصوصیت AutoGenerateDeleteButton را با مقدار true تنظیم میکند.خصوصیت DataKeyNames در GridView را CustomerId قرار میدهیم.
GridView با رویدادهای OnRowDataBound و OnRowDeleteting مشخص شده است.
<asp:GridView ID="GridView1" runat="server" DataKeyNames="CustomerId" OnRowDataBound="OnRowDataBound" OnRowDeleting="OnRowDeleting" EmptyDataText="No records has been added." AutoGenerateDeleteButton="true"> </asp:GridView>
فضاهای نام زیر را در #C و VB.Net وارد کنید.
کد #C
using System.Data; using System.Data.SqlClient; using System.Configuration;
کد VB.Net
Imports System.Data Imports System.Data.SqlClient Imports System.Configuration
GridView مجموعه ای است که در رویداد Page Load از رکوردهای جدول Customers استفاده می کند.
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(); } } } } }
کد VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Me.IsPostBack Then Me.BindGrid() End If End Sub Private Sub BindGrid() Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString Using con As New SqlConnection(constr) Using cmd As New SqlCommand("SELECT CustomerId, Name, Country FROM Customers") Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dt As New DataTable() sda.Fill(dt) GridView1.DataSource = dt GridView1.DataBind() End Using End Using End Using End Using End Sub
حذف رکوردهای GridView
وقتی که بر روی دکمه Delete (حذف)کلیک میکنیم رویداد OnRowDeleting فراخوانی می شود. Customerld یک کلید اصلی است که از خصوصیت DataKey گرفته میشود و با استفاده از Customerld رکورد از جدول بانک اطلاعاتی حذف میشود.
کد #C
protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e) { int customerId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]); string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand("DELETE FROM Customers WHERE CustomerId = @CustomerId")) { cmd.Parameters.AddWithValue("@CustomerId", customerId); cmd.Connection = con; con.Open(); cmd.ExecuteNonQuery(); con.Close(); } } this.BindGrid(); }
کد VB.Net :
Protected Sub OnRowDeleting(sender As Object, e As GridViewDeleteEventArgs) Dim customerId As Integer = Convert.ToInt32(GridView1.DataKeys(e.RowIndex).Values(0)) Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString Using con As New SqlConnection(constr) Using cmd As New SqlCommand("DELETE FROM Customers WHERE CustomerId = @CustomerId") cmd.Parameters.AddWithValue("@CustomerId", customerId) cmd.Connection = con con.Open() cmd.ExecuteNonQuery() con.Close() End Using End Using Me.BindGrid() End Sub
برای تعیین دکمه حذف برای اولین بار از رویداد OnRowDataBound استفاده می کنیم که از جاوا اسکریپ Confirm برای زمانی که کاربر می خواهد رویداد کلیک را انجام دهد ، استفاده می کنیم.
کد #C
protected void OnRowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex != GridView1.EditIndex) { (e.Row.Cells[0].Controls[0] as LinkButton).Attributes["onclick"] = "return confirm('Do you want to delete this row?');"; } }
کد VB.Net
Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow AndAlso e.Row.RowIndex <> GridView1.EditIndex Then TryCast(e.Row.Cells(0).Controls(0), LinkButton).Attributes("onclick") = "return confirm('Do you want to delete this row?');" End If End Sub
نمایش پیغام تایید بعد از کلیک کردن دکمه حذف :
- ASP.net
- 3k بازدید
- 3 تشکر