iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

2
Modern Web

淺談資料庫&ASP.net&C# 入門系列 第 31

[iT鐵人賽Day31]ASP.NET 用Gridview控制項的刪除事件刪除資料

Gridview的刪除事件

使用ASP.NET與SQLServer做出留言板系列文中,已經有寫過新增資料進資料表的作法了,今天要來寫在Gridview控制項刪除資料庫內的資料的用法。

新增刪除鈕

在前台(.aspx)的設計模式中,GridView控制項的右上角小箭頭,選則編輯資料行,可用欄位找到CommandField,將刪除的欄位拉近選取的欄位,並將它轉換為TemplateField(在右下方有藍色的字可以按)。

https://ithelp.ithome.com.tw/upload/images/20191004/20119925LAvBUcprFU.png

並在選取的欄位,找到刪除點開,將HeaderText打上欄位名稱。

https://ithelp.ithome.com.tw/upload/images/20191004/201199250y6H3hY16O.png

按下確定後,GridView選編輯樣板,對刪除右鍵選屬性就會出現刪除欄位(LinkButton),且內容也會出現刪除的連結了。

https://ithelp.ithome.com.tw/upload/images/20191004/20119925ulpFOioQGH.png

CommandName:Delete

接下來GridView選編輯樣板,ItemTemplate找到刪除,對刪除右鍵選擇屬性,確認CommandName是否是Delete,若不是須將改成Delete,然後結束樣板。

CommandName要寫Delete事件動作才可以抓到這欄位是刪除。

https://ithelp.ithome.com.tw/upload/images/20191004/20119925jNZ7tKZaFy.png

事件中的動作Deleting

GridView的事件有好幾個,多數都有前後之分(ing或ed結尾),刪除的話有分成RowDeleted和RowDeleting。

RowDeleted: 刪除後。

RowDeleting: 刪除中。

手寫刪除程式,必須寫在RowDeleting事件,所以在GridView屬性,選到事件(閃電符號),對RowDeleting連點兩下會跳到.aspx.cs後端的畫面。

https://ithelp.ithome.com.tw/upload/images/20191004/20119925Z8dx0RJvLY.png

aspx.cs 刪除資料寫法

 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Value.ToString();//取得點擊這列的id
            
            string get = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionStrings的name"].ConnectionString;
            SqlConnection Connection = new SqlConnection(get);
            
            SqlCommand command = new SqlCommand($"DELETE  FROM ORID_data WHERE   (id = {id}) ", Connection);
            Connection.Open();
            command.ExecuteNonQuery();
            Connection.Close();
            Response.Redirect(Request.Url.ToString());

        }

稍微解釋一下:

  1. DataKeys: 代表資料物件中的每個資料列的建值。
  2. e.RowIndex:目前要刪除這筆資料在GridView中的索引值(通常都會是id)。可參考這篇
  3. SqlConnection: 建立ASP.NET與資料庫的通道。
  4. SqlCommand: 下達的SQL指令,記得要寫where條件式,SQL刪除語法可參考SQL-DELETE刪除的使用方法
  5. ExecuteNonQuery():執行並回傳影響的數量方法。
  6. Response.Redirect(): 跳轉至其它頁面的方法。
  7. Request.Url.ToString():取得目前要求的URL指令,並字串化,放進Redirect()就是可重新整理現在這頁,可參考,也可以Redirect回自己的aspx頁面。

彈跳是否確定刪除?

到前台找到刪除的LinkButton內加上以下程式碼:

OnClientClick="javascript:if(!window.confirm('你確定要刪除嗎?')) window.event.returnValue = false;"

這樣點擊刪除後,就會自動跳出"你確定要刪除嗎?"的視窗了,防止誤按。

https://ithelp.ithome.com.tw/upload/images/20191004/20119925NKi1TqXzCd.png

按下確定後,就可以刪除資料了,並且自動重新整理頁面將資料從GridView中消失了。


上一篇
[iT鐵人賽Day30]使用ASP.NET與SQLServer做出留言板(不包含樣式美化XDD) 下篇
下一篇
[iT鐵人賽Day32]請出示驗證票(Ticket),才能入場買餅乾(Cookie)吃唷!(FormsAuthentication 授權驗證 會員登入)
系列文
淺談資料庫&ASP.net&C# 入門36

尚未有邦友留言

立即登入留言