2011-03-15 45 views
0

任何人都可以在刪除的jqGrid所選記錄在asp.net C#以下代碼如何刪除jqGrid的所選記錄在asp.net C#

<script type="text/javascript"> 
     var x = screen.width; 

     $(document).ready(function() { 

      jQuery("#table1").jqGrid({ 
       url: 'griddata.aspx/DepartmentData?id=1', 
       datatype: 'json', 
       mtype: 'GET', 

       colNames: ['Department', 'Dept Code', 'Contact Person', 'Contact Phone','Contact Email'], 
       colModel: [ 
         { name: 'Department', index: 'Department', width: 55 }, 
         { name: 'Dept Code', index: 'Dept Code', width: 90 }, 
         { name: 'Contact Person', index: 'Contact Person', width: 40, align: 'center' }, 
         { name: 'Contact Phone', index: 'Contact Phone', width: 40, align: 'center' }, 
         { name: 'Contact Email', index: 'Conatct Email', width: 40, align: 'center' }], 


       pager: '#pager1', 
       rowNum: 15, 
       rowList: [10, 20, 30], 
       sortname: 'Department', 
       sortorder: "desc", 
       loadonce: true, 
       loadtext: "Loading....", 
       shrinkToFit: true, 
       multiselect: true, 
       emptyrecords: "No records to view", 
       width: x - 40, 
       height: 230, 
       rownumbers: true, 
       caption: 'DepartmentTable' 


      }); 
      jQuery("#table1").jqGrid('navGrid', '#pager1', { edit: true, add: true, del: true }); 


     }); 

</script> 
+0

什麼部分給你帶來麻煩?衆所周知,jqGrid文檔在開發過程中遇到了困難,所以很難確切知道如何處理刪除操作,而不是將選項傳遞給網格初始化程序。你有鏈接到這個版本的刪除功能的確切文檔嗎?此外,您的斷開連接在哪裏?您是否具有服務器端功能,並且只需在客戶端使用AJAX調用來實現事件模型?或者你有客戶端代碼,但需要服務器上的AJAX監聽器?等等。? – David 2011-03-15 13:14:46

+0

我在我的jqgrid的頁面上有一個垃圾桶圖標...當我選擇一行並單擊垃圾桶圖標(刪除)它說沒有設置網址...我是一個初學者....我還沒有添加功能刪除任何地方我只是想在jqgrid上的垃圾桶圖標刪除選定的記錄... thanx – bhargav 2011-03-15 13:21:32

+0

它會幫助我添加一些事件處理程序在我的代碼後面(aspx.cs)頁面 – bhargav 2011-03-15 13:23:38

回答

1

幫助(可能是時候開始移動從這次談話評論回答...)

我不是100%熟悉jqGrid中的這個特殊功能(正如我在評論中說的,它自己的文檔很難跟上它的發展),但基本上那裏應該是「刪除」功能所尋找的兩件事之一:

  • 用於發送預定義刪除請求的URL。在查詢字符串中可能帶有一些參數的GET請求,儘管這並不確定。該URL可能是高度可配置的。你需要找到在哪裏/如何配置它(除非你可以指向你正在使用的文檔/教程,或許我可以從那裏獲得幫助)。
  • 刪除的客戶端事件處理程序。這可能是你在JavaScript代碼中附加內聯函數的原因。這個函數,根據你的需要,可能只是一個AJAX調用(通過jQuery,自然)到你的設計/選擇的服務器端資源來處理刪除。

從我過去使用jqGrid的經驗,以及從您的評論到目前爲止,這聽起來像是第一個選擇是它正在尋找什麼。在初始化的某個地方,jqGrid需要你設置一個它將發送刪除的URL。該URL將用於您的服務器端代碼的設計。

這意味着您還需要創建一個服務器端處理程序來實現此目的。如果您使用ASP .NET MVC,這非常簡單。一個控制器動作可以很好地完成這項工作,如果需要將任何事情發回客戶端,甚至可以很容易地返回JSON。如果您使用的是WebForms,那麼您有兩個主要選項:

  • 創建一個沒有UI(從.aspx文件中刪除Page指令除外)的新頁面。它將檢查傳入的參數,在服務器端執行所需的操作(最有可能從數據庫中刪除記錄),然後手動製作響應。您需要查看操作響應標題,因爲它可能會期望內容類型爲application-json或某種性質。
  • 創建一個HttpHandler,它不具有.aspx頁面的開銷(並且在這方面更像是一個控制器操作)。它會做同樣的事情,執行服務器端操作和所有這些,並手動製作響應。 (我假設預期會有特定的響應,例如可能以實際服務器錯誤(例如500)的形式表示成功或失敗。)

您的jqGrid初始化程序會設置一些屬性配置它用來發送刪除請求到服務器的URL。當然,這將包括被刪除的行的ID。本質上,你有一個批次手動控制發生了什麼。這不是真正的即插即用,你必須編寫和理解代碼。

編輯:如果你在服務器端進行客戶端刪除,那麼在這裏你不需要大量的jqGrid參與。您只需要一個ASP .NET按鈕,將其發回到服務器,刪除記錄,並將頁面數據(包括jqGrid數據)重新綁定到服務器的新數據集。請記住,這個後期模型並不是真正意義上使用的jqGrid。

您可以在客戶端爲jqGrid刪除添加一個按鈕,如演示here(單擊左側的「實時數據操縱」,然後單擊「刪除行」查看示例)。然後,您只需爲該按鈕的單擊事件編寫JavaScript函數來處理刪除。他們的例子並在客戶端刪除:

$("#dedata").click(function(){ 
    var gr = jQuery("#delgrid").jqGrid('getGridParam','selrow'); 
    if(gr != null) 
    jQuery("#delgrid").jqGrid('delGridRow',gr,{reloadAfterSubmit:false}); 
    else 
    alert("Please Select Row to delete!"); 
}); 

當然,你需要添加到(因爲我在評論說,之前的客戶端的情況下刪除有錯誤的服務器)一個AJAX調用來處理服務器端的刪除,就像我上面提到的那樣。最直接的方法是使用jQuery .ajax方法。這將調用您的服務器端資源(控制器操作,HttpHandler或.aspx頁面)來處理服務器端刪除並返回成功或失敗。

請記住,服務器端從數據庫中刪除是一個完全獨立的話題,而不是你在這裏做的事情。 ADO .NET和LINQ以及Entity Framework的文章和教程也遍及互聯網。從本質上講,所有你想要做的(基於你的評論到目前爲止)是從.NET代碼中調用一個SQL存儲過程。谷歌將在這方面產生很多結果。

+0

thanx大衛爲你的幫助...我將嘗試workin對此 – bhargav 2011-03-15 13:44:57

+0

thanx很多大衛爲你的時間...我搜索了很多關於使用客戶端刪除...這很難理解...所以我終於決定去服務器端刪除,涉及回發.... – bhargav 2011-03-15 14:09:06

+0

@bhargav:對於一個初學者來說,通常是要走的路。不要誤解我的意思,我完全贊同在適當的情況下使用jqGrid和AJAX以獲得更好的用戶體驗。但你似乎比現在咀嚼的食物更多。希望有一天你會回來這種方法,因爲它絕對是值得的:) – David 2011-03-15 14:14:28