【问题标题】:List to Jquery Datatable c#列表到 Jquery 数据表 c#
【发布时间】:2016-05-12 06:38:51
【问题描述】:

我正在尝试使我的列表填充我的 jquery 数据表,但我无法这样做,目前我将我的列表写入文件以通过我的view-model 中的数据表访问它是我的方法正确一个?

这是我的代码:

List<string> list = new List<string>();
foreach (var item in db.Pos)
{
   var total = 0;
   decimal costo = 0;

   for (int i = 1; i <= 31; i++)
   {
      var value = 0;
      if (item.Fecha.Day == i) { value = item.Cantidad; costo = costo + item.Total; }
      total += value;
   }

   list.Add(item.Descripcion);
   list.Add(item.Pdv);
   list.Add(item.Rid);
   list.Add(((costo / (total + 1)).ToString("C")));

   for (int i = 1; i <= 31; i++)
   {
      var value = 0;
      list.Add(value.ToString());
      int month = item.Fecha.Month;
      if (item.Fecha.Day == i) { value = item.Cantidad; list.Add(value.ToString()); }                                                
   }

   list.Add(total.ToString());
   list.Add((((costo / (total + 1)) * total).ToString("C")));
}

var json = JsonConvert.SerializeObject(new List<object>() { list });
System.IO.File.WriteAllText(@"\path.txt", json);

还有我的 Datatable Ajax 调用:

$(document).ready(function () {
   var table = $('#pftable_hdr').DataTable({
    ajax: {
      url: "/path.txt",
      dataSrc: ""
    },
    scrollY: "500px",
    scrollX: true,
    scrollCollapse: true,
    fixedColumns: {
      leftColumns: 3
    }
  });
});

我的 Txt 文件输出的一部分:

[["ENS FRUTAS","REST","CENAS","$26.50","0","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","$26.50","CAFE AMER ILIMIT","REST","CENAS","$11.50","0","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","$11.50","QUESADILLAS TRAD (2)","REST","CENAS","$25.50","0","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","$25.50"]]

如何用我的列表填充我的 Jquery 数据表?我的文本文件在$data 之前和之后应该有[],但我不能只在文件的第一个和最后实现。

【问题讨论】:

  • 所以你想要 ["ENS FRUTAS","REST","CENAS","$26.50","0","1"]["ENS2","REST","CENAS", "$26.50","0","1"]..... ?
  • 完全正确,所以我的数据表可以正确显示它们@Rigin
  • 我会给出一个答案 .. 试试那个代码。不能在这里写,可能会混淆
  • 你应该有一个列表列表。然后序列化它。

标签: javascript c# ajax list datatables


【解决方案1】:

您的后端代码应如下所示。通过这样做,它将构建一个如下所示的 JSON 字符串:[["","",""...],["","",""...],["","",""...]]

List<List<string>> list = new List<List<string>>();
foreach (var item in db.Pos)
{
    List<string> listItem = new List<string>();
    var total = 0;
    decimal costo = 0;

    for (int i = 1; i <= 31; i++)
    {
        var value = 0;
        if (item.Fecha.Day == i) { value = item.Cantidad; costo = costo + item.Total; }
        total += value;
    }

    listItem.Add(item.Descripcion);
    listItem.Add(item.Pdv);
    listItem.Add(item.Rid);
    listItem.Add(((costo / (total + 1)).ToString("C")));

    for (int i = 1; i <= 31; i++)
    {
        var value = 0;
        listItem.Add(value.ToString());
        int month = item.Fecha.Month;
        if (item.Fecha.Day == i) { value = item.Cantidad;    listItem.Add(value.ToString()); }                                                
    }

    listItem.Add(total.ToString());
    listItem.Add((((costo / (total + 1)) * total).ToString("C")));
    list.Add(listItem);
}

var json = JsonConvert.SerializeObject(list);
System.IO.File.WriteAllText(@"\path.txt", json);

【讨论】:

  • 我尝试使用您的代码,但在这部分出现错误:
  • NVM 得到了它,我的文件现在完全按照我的需要保存了,谢谢伙计
【解决方案2】:

这样试试

 list.Add("[");
 list.Add(item.Descripcion);
// rest code....

list.Add((((costo / (total + 1)) * total).ToString("C")));
list.Add("]");

这对您的情况有用吗?说出你的评论

【讨论】:

  • 如果有额外的方括号,则通过子串删除
【解决方案3】:
var json = JsonConvert.SerializeObject(new List<object>() { list });

在上面的行列表中已经是一个对象,那么为什么要创建一个新对象并将“列表”分配给该对象。

尝试如下,

var json = JsonConvert.SerializeObject(list);

这将为您提供所需的结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多