ASP.NET中GridView控件刪除數據的兩種方法


 

     今天在用GridView控件時,發現了一個問題,就是使用GridView控件在刪除數據時的問題。接下來我們通過模板列方式和CommandField方式刪除某條數據講解下兩者之間的區別。

   方式一:通過模板列式刪除數據

      案例:在頁面中添加一個GridView控件,然后通過編輯列的方式為GridView添加對應的列。如下圖:紅色圈起的部分為模板列的刪除列

 

 然后在編輯模板中拖一個刪除按鈕,如下圖

 

  接下來我們就可以編寫代碼了。

  找到GridView的RowCommand事件,如下圖

 

  然后在源視圖下,添加如下三個重要的屬性

   CommandName:命令的名稱,值一般寫成Delete,也可以寫成其他名稱,但是為了見名知意,我們寫成Delete就ok

   CommandArgument:命令參數

   OnClientClick:注冊客戶端腳本,我們都知道,刪除數據之前要給用戶一個提示,可以通過該屬性實現。如下圖:

 

    接下來我們就可以在RowCommand中編寫代碼了

      if (e.CommandName == "Delete") //如果是刪除按鈕

        {

            string stuNO = e.CommandArgument.ToString(); //獲取學生編號

            string sql = "delete from Student where studentno='" + stuNO + "'";

            int result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text);

            if (result > 0)

            {

                Response.Write("<script type=text/javascript>alert('刪除成功!')</script>");

                BindData();

            }

            else

            {

                Response.Write("<script type=text/javascript>alert('刪除失敗!')</script>");

            }

        }

   這樣我們就可以刪除一條數據了。

     方式二:CommandField實現刪除某條數據

        由於CommandField方式會引發RowDeleting事件,所以我們直接在GridView的RowDeleting事件中編寫代碼就可以了,代碼如下:

      string stuNo = GridView1.DataKeys[e.RowIndex].Value.ToString();

        string sql = "delete from Student where studentno='" +stuNo+ "'";

        int result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text);

        if (result > 0)

        {

            Response.Write("<script type=text/javascript>alert('刪除成功!')</script>");

            BindData();

        }

        else

        {

            Response.Write("<script type=text/javascript>alert('刪除失敗!')</script>");

        }

     最后我們對這兩中方式的刪除做個總結。

       模板列中通過按鈕刪除某條數據:

          01.不會引發RowDeleting事件

          02.需要給模板列設置CommandName和CommandArgument

          03.通過  string stuNO = e.CommandArgument.ToString();拿到主鍵

   當然前提是在前台頁面中用CommandArgument='<%# Bind("studentNo")%>'進行設置

      通過ComandField刪除某條數據

         1.  GridView1.DataKeyNames = new string[] { "StudentNo" };

         2.既會觸發RowCommand事件,又會觸發RowDeleting事件,並且RowCommand事件

          會先被觸發,這樣的話就不能再同一個GridView中既用模板列刪除,又用超鏈接刪除!

         3.獲取主鍵方式: string stuNo=GridView1.DataKeys[e.RowIndex].Value.ToString();         */

  注意:之所以可以通過GridView1.DataKeys[e.RowIndex].Value.ToString();

獲取到當前選中行的主鍵是因為為GridView設置了DataKeyNames。

     好了,今天就先總結到這里。以后會陸續更新GridView的使用方法。如果這篇博文能給迷途中的你一丁點兒幫助,那便是極好的。特別是在這個推崇丟棄服務器端控件的時代。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM