【问题标题】:Datatables jQuery Select数据表 jQuery 选择
【发布时间】:2022-01-20 15:53:34
【问题描述】:

我对 jQuery DataTables 中的选择有疑问。第一页很好地加载了选择,但第二页没有。有时它会加载它们,而另一些则不会

$.ajax({
  type: "POST",
  url: "Compensaciones.aspx/getTipoConceptoComp",
  data: "{p_IdTipoTributo: '" + $("#<%=ddlTipoTributo.ClientID %>").val() + "'}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(data, st) {
    if (st == 'success') {
      if (data.d.length > 0) {
        dropdownlist = $('#Detalledet select').empty().append('<option selected="selected" value="0">SELECCIONE</option>')[i];
        $.each(data.d, function() {
          dropdownlist = $('#Detalledet select').append($("<option value=" + this['IDTIPOCONCEPTO'] + "></option>").val(this['IDTIPOCONCEPTO']).html( /*this['CONCEPTO'] + " - " + */ this['DESCRIPCION'] + "  " + this['IMPACTO']))[i];
        });
      } else {
        dropdownlist = $('#Detalledet select').empty().append('<option selected="selected" value="0">Not available<option>')[i];
      }
    }
  },
  failure: function(data) {
    alert(data.d);
  }
});

【问题讨论】:

  • 请澄清是什么意思,但第二个没有,有时如果加载它们,其他则没有
  • 请注意,您发送的数据的 JSON 格式不正确
  • 很好奇,为什么要不断重置dropdownlist = $(... 的值(此处未定义),包括$.each( 中的多次
  • second 不是,我的意思是,在表格的第一页上加载了选择,但在第 2 页上它们显示为空,尽管有时甚至第一页也没有加载它们跨度>

标签: jquery datatable jquery-datatables-editor


【解决方案1】:

感谢大家不厌其烦的回答

【讨论】:

    【解决方案2】:

    我假设问题是正在发送的对象,所以我创建了一个名为 mydata 的对象。 然后使用.ajax 的promise 形式创建一个本地数组,然后只用它访问一次DOM。

    • 不需要.empty(),因为无论哪种方式,我们都将其替换为.html()
    • let dropdownlist = $('#Detalledet select'); 中缓存选中的下拉列表/选择,这样我们就可以操作它而无需多次访问 DOM 来获取它
    • 向数组推送新选项(有几种方法)
    • 完成后,将数组追加到 DOM 一次,而不是每次循环
    • 警告:由于未提供示例,因此我没有花时间用实际数据集对此进行测试

    let mydata = {
      p_IdTipoTributo: $("#<%=ddlTipoTributo.ClientID %>").val()
    };
    .ajax({
        type: "POST",
        url: "Compensaciones.aspx/getTipoConceptoComp",
        data: mydata,
        contentType: "application/json; charset=utf-8",
        dataType: "json"
      })
      .done(function(data) {
          let dropdownlist = $('#Detalledet select');
          if (data.d.length > 0) {
            let newOptions = [];
            .push($('<option selected="selected">', {
                value: 0
              })
              .text("SELECCIONE"));
            $.map(data.d, function(n, i) {
              options.push($('<option>', {
                  value: n['IDTIPOCONCEPTO']
                })
                .text(n['DESCRIPCION'] + "  " + , n['IMPACTO']));
            });
            dropdownlist.html(newOptions);
          } else {
            dropdownlist.html('<option selected="selected" value="0">Not available</option>');
          }
        }
      })
    .fail(function(data) {
      alert(data.d);
    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 2020-11-20
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2012-11-20
      • 2019-11-25
      相关资源
      最近更新 更多