2014-03-28 83 views
0

我必須承認,我不是很擅長Javascript。javascript函數調用c#方法來獲得datatables.net的整數數組列順序

我正在使用datatables.net創建一個表格 該數據表使用對通用處理程序的調用進行填充,該處理程序然後將調用數據庫(在c#中)來獲取值。這是行得通的。 我想要做的是使用列重新排序功能。設置順序是由整數數組。我想將這些值存儲在數據庫中,然後分配使用它。我沒有想過首先保存列順序部分,因爲我想先讓「獲取」過程工作。

在一個正常的世界裏,設置列重新排序的代碼是通過編碼入數據表functionlity喜歡:

<script> 
    $(function() { 

     var columnOrder = [4, 3, 2, 1, 0, 5]; 

     $("#<%=DT.ClientID%>").dataTable({ 
      dom: 'Rlfrtip', 
      colReorder: { 
       order: columnOrder 
      }, 
      "bProcessing": true, 
      "bServerSide": true, 
      "bFilter": false, //Hide the search box 
      "sPaginationType": "full_numbers", 
      "sAjaxSource": "../DataHandler/Data.ashx", 

所以我想要做的是什麼填充「columnOrder」來自數據庫的值。 我試過使用一個webmethod,然後通過$ .ajax獲得該值({+ Post。這是我在default.aspx方法背後的c#代碼,但是返回了一個空對象,它似乎在進入之前先填充數據表webmethod因此調用的時機也不正確

問題:如果我過度複雜化了這個問題,我就是在撓頭我想要的是從ac#服務器端返回一個整數數組然後使用這個變量來設置列的順序 任何關於如何從c#中將整型數組轉換爲變量的建議基本上就是我需要開始的東西 謝謝!

回答

0

我想要的只是從c#服務器端方法返回一個整數數組到JavaScript變量。

我有一個方法返回一個整數數組,但不是一個數組,但它的工作原理就像一個JavaScript。

方法如下

[WebMethod] 
    public static List<int> getAdd_Zip(int ZIP_ID) 
    { 
     try 
     { 
      BusinessContacts objContacts = new BusinessContacts(); 
      DataTable dtInf = objContacts.getAdd_Zip(ZIP_ID); 
      List<int> lRes = new List<int>(); 

      if (dtInf.Rows.Count > 0) 
      { 
       lRes.Add(Convert.ToInt32(dtInf.Rows[0]["COU_ID"])); 
       lRes.Add(Convert.ToInt32(dtInf.Rows[0]["STE_ID"])); 
       lRes.Add(Convert.ToInt32(dtInf.Rows[0]["MUN_ID"])); 
      } 

      return lRes; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

注意,該方法返回整數的名單,我宣佈一個DataTable,然後我填寫該表與其他方法(這並不重要),然後,我填了表有3個值。

所以現在,我對JavaScript的

function wsGetAdd_Zip(ZIP_ID) { 
var AddZips = new Array(); 
var params = new Object(); 
params.ZIP_ID = ZIP_ID; 
params = JSON.stringify(params); 
$.ajax({ 
    type: "POST", 
    url: "Contactos.aspx/getAdd_Zip", 
    data: params, 
    contentType: "application/json; charset=utf-8", 
    async: false, 
    success: function (result) { 
     AddZips = result.d; 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert(textStatus + ": " + XMLHttpRequest.responseText); 
    } 
}); 

return AddZips; 
} 

該方法返回一個整數數組的一個方法。

我希望這可以幫助你。

+0

嗨,謝謝你的幫助。你的代碼很有意義。我用你的代碼作爲指導來嘗試類似的東西。我現在得到的錯誤是:「不支持數組的反序列化。」 我想我需要回到JavaScript的基本知識來解決這個問題。另一方面,另一方面,如果我在後面的c#代碼中獲得所需的所有值,然後在該頁面上使用公共變量並從JavaScript調用它,會不會是錯誤的?我知道這會起作用。我不確定這是否是最佳做法。 再次感謝。 –

+0

你使用了我給你的相同的代碼嗎?這個錯誤是由於JSON(我猜)發生的,如果是這樣,你必須導入json2.js。我不能重新記住我下載的地方,但可以在谷歌搜索。 – razielx4crazy