2014-03-28 41 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