站內文章

2014年10月20日 星期一

gridview中以TemplateField新增button來做刪除row的動作


我的做法是用TemplateField的資料行自己抓一個button命名"刪除"
將資料庫的資料砍掉,再更新一次Gridview,網路上也有其他不同的做法
這邊分享一篇同樣是刪除動作的教學文章
http://blog.finalevil.com/2008/11/aspnetgridview03.html

本文這個方法需要建gridview的RowCommand和RowDeleting


原始檔修改

                       
                   



程式碼
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index = Convert.ToInt32(e.CommandArgument);//取得點選的index y軸
        GridViewRow selectedRow = GridView1.Rows[index];//取得x軸
        TableCell device_lot_num = selectedRow.Cells[1];//取得批次編號欄位
        switch (e.CommandName)//取得x軸點選的button
        {
            case "Delete"://刪除
                // 連接資料庫
                SqlConnection SqlConn = new SqlConnection();
                SqlConn.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\VS20141001\\App_Data\\TPC_Transformers.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                SqlConn.Open();
                // 刪除 MaterialCollarManagement 資料表中 所選取刪除的資料(以 批次編號Collar_Number為條件 )
                SqlCommand Cmd = new SqlCommand("Delete From MaterialCollarManagement where Collar_Number = '" + device_lot_num.Text + "'", SqlConn);
                // 執行刪除指令
                Cmd.ExecuteNonQuery();
                Cmd.Dispose();
                break;
            default:
                break;
        }
    }


    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        // 重新將資料庫的資料讀到datatable並bind進去gridview
        DataTable dt3 = new DataTable();
        SqlConnection SqlConn = new SqlConnection();
        SqlConn.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\VS20141001\\App_Data\\TPC_Transformers.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        SqlConn.Open();
        SqlDataAdapter da = new SqlDataAdapter("Select ROW_NUMBER() OVER(ORDER BY Collar_Number DESC) AS Row,Collar_Number,Transformer_Amount,Switch_Amount,Apply_Date,Collar_User,Authorize_User, " +
        "Case when Authorize = 0 then '未核准' when Authorize = 1 then '核准' END AS Authorize, " +
        "Case when Depot = 0 then '出庫' when Depot = 1 then '在庫' END AS  Depot " +
        "From MaterialCollarManagement Where Authorize = '0'", SqlConn);
        da.Fill(dt3);
        GridView1.DataSource = dt3;
        GridView1.DataBind();
        SqlConn.Close();
    }

沒有留言:

張貼留言