iT邦幫忙

0

ASP.NET C# GridView 右鍵選單從資料庫刪除資料

各位大大好 不好意思常上來發一些問題
目前在做一個功能是在GridView的ROW上按右鍵能Show出選單的功能
現在想單純做一個刪除功能(從資料庫刪除資料)
我在國外網站找到許多範例都是使用jquery contextMenu
但看到的都是新增、刪除、修改ROW,想請問有辦法做從資料庫刪除資料的功能嗎??
https://ithelp.ithome.com.tw/upload/images/20180420/20107444IbpX1vHE8n.jpg

看更多先前的討論...收起先前的討論...
untitled iT邦新手 5 級 ‧ 2018-04-20 10:09:39 檢舉
刪除的時候觸發一個function del() {
取得你要刪除的項目欄位
例如
companyName= row(0).cells(0).innerText
contanctName= row(0).cell(1).innerText
之後把這兩項參數使用jquery ajax post代到後端用SQL去刪除就完成了
}
小康 iT邦新手 5 級 ‧ 2018-04-20 11:41:24 檢舉
謝謝大大的經驗分享
untitled iT邦新手 5 級 ‧ 2018-04-20 13:52:31 檢舉
資料庫處理時 我個人是會將刪除的資料在資料庫中用一個欄位標記起來
例如 state='DEL'
然後實際上刪除資料是用UPDATE的動作在進行,也可保留記錄

顯示的時候就必須顯示未刪除的資料 >>state is null

提供給你參考
小康 iT邦新手 5 級 ‧ 2018-04-20 16:53:34 檢舉
感謝大大分享 這一個部分我也有想到
畢竟User刪除後 總有時候會反悔 XD

1 個回答

0
最佳解答
小康 iT邦新手 5 級 ‧ 2018-04-20 11:41:54 檢舉

感謝大大的分享

小康 iT邦新手 5 級 ‧ 2018-04-20 16:49:10 檢舉

大大我照範例實作能從資料庫刪除資料了,但是每次都只從第一筆開始刪(例如:要刪第3筆結果都從第1筆開始刪)不知道哪邊出錯了@@
https://ithelp.ithome.com.tw/upload/images/20180420/201074445uVHltuMg0.jpg

.aspx

 <script language="javascript" type="text/javascript">
        var CustomerID = null;
        var CompanyName = null;

$(document).ready(function () {
$(".customerRow").contextMenu({ menu: 'myMenu' }, function (action, el, pos) { contextMenuWork(action, el, pos); });
$(".openmenu").contextMenu({ menu: 'myMenu', leftButton: true }, function (action, el, pos) { contextMenuWork(action, el.parent("tr"), pos); });
        });

function contextMenuWork(action, el, pos, val) {
   var rowindex = (el[0].rowIndex * 1 - 1);
   UserID = $('[id*=lblUser_name]').html();
   ModuleName = $('[id*=lblUserModule_name]').html();
   switch (action) {
        case "delete":
        {
          var msg = "Delete " + ModuleName + "?";   
          confirm(msg);
          break;
        }
        case "insert":
        {
           alert("Insert");
           break;
        }
        case "edit":
        {
           alert("Edit");
           break;
        }
}
  $.ajax({
         type: "POST",
         url: "mainpage.aspx/DeletegvEmpData",
         data: '{UserModuleName: "' + ModuleName + '"}',
         contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                }
            });
        }

        function OnSuccess(response) {
            alert(response.d);
        } 
        
function pageLoad() {
$(".customerRow").contextMenu({ menu: 'myMenu' }, function (action, el, pos) { contextMenuWork(action, el, pos); });
$(".openmenu").contextMenu({ menu: 'myMenu', leftButton: true }, function (action, el, pos) { contextMenuWork(action, el.parent("tr"), pos); });
        }
    </script>

.cs

protected void UserModuleGridView_RowDatabond(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)UserModuleGridView.DataSource;
            int rowindex = e.Row.RowIndex;
            e.Row.Attributes.Add("class", "customerRow");
        }
    }
    
 [System.Web.Services.WebMethod]
 public static string DeletegvEmpData(string UserModuleName)
{
        string strmsg = string.Empty;
string constr = ConfigurationManager.ConnectionStrings["lseformsConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
   {
      SqlCommand cmd = new SqlCommand("Delete [Antibiotic] 
      where UserModule_name=@UserModule_name", con);
      con.Open();
      cmd.Parameters.AddWithValue("@UserModule_name",
      UserModuleName);
      int retval = cmd.ExecuteNonQuery();
      con.Close();
            
      if (retval == 1)
         strmsg = "true";
      else
         strmsg = "false";
         return strmsg;
        }
}

=@UserModule_name 要看你傳到後端的UserModule_name是不是你要刪的那筆吧~c#可以開debug很好查,不像其他語言 /images/emoticon/emoticon06.gif

我要發表回答

立即登入回答