【问题标题】:Enable/Disable Html button based on the data from the server根据来自服务器的数据启用/禁用 Html 按钮
【发布时间】:2016-05-30 06:56:57
【问题描述】:

我正在使用数据表 Jquery 并进行 ajax 调用以从服务器读取数据。 假设数据库有 3 个属性“Attribute1,Attribute2,Status”。 根据状态,数据表上的第三列应该是启用或禁用按钮。

function test(server_url,table_id){
.ajax({url: server_url,dataType:"html",success: function(result){
    var json_obj=JSON.parse(result);
    var Columns="<thead><tr>";
    var Fields=[],Tool_columns=[];
    UserGroupFields=json_obj.columns;
    for(i=0;i<json_obj.columns.length;i++){
        Columns+="<th>"+json_obj.columns[i]+"</th>";
        var field_dic={};
        var tool_dic={};
        field_dic["label"]=json_obj.columns[i];
        field_dic["name"]=json_obj.columns[i];
        Fields[i]=field_dic;
        Tool_columns[i]=tool_dic;
    }
    tool_dic["targets"]=-1;
    tool_dic["data"]="null";
    tool_dic["defaultContent"]="<button this.disabled=true'>Yes</button>";        
    myTable=('#'+table_id).DataTable({
            "order":[[0,"desc"]],
            aaData:json_obj.data,
            dom:  'T<"clear">lfrtip',
            columns:Tool_columns,
            tableTools: {
                sRowSelect: 'single',
                "sRowSelector": "td:not(:last-child)",
                "aButtons": [ {
                    "sExtends":    "editButton",
                    "sButtonText": "Edit",
                    "target":      "#"+table_id
                }]
            },
           "search": {
              "regex": true,
              "smart": false
            }
    });

通过上面的代码,我可以为从服务器读取的每一行添加一个按钮。那么我现在如何根据每条记录“状态”的第三个属性启用或禁用它。

数据类型:

Object { columns: Array[3], data: Array[2] }

数据:

[{"column1":"1","Column2":"abc","Status":"Yes"},{"column1":"2","Column2":"xyz","Status":"No"}]

任何线索将不胜感激。 我是 JQuery 和 JavaScript 的新手

谢谢

【问题讨论】:

    标签: javascript jquery html ajax datatables


    【解决方案1】:

    查看data中status的值,并在aaData中设置相应的按钮。

    在您的代码中添加了一行:

    field_dic["button"]=(json_obj.columns[i]["status"]=="LIVE")?"Button Text":"Button Text";

    for(i=0;i<json_obj.columns.length;i++){
            Columns+="<th>"+json_obj.columns[i]+"</th>";
            var field_dic={};
            var tool_dic={};
            field_dic["label"]=json_obj.columns[i];
            field_dic["name"]=json_obj.columns[i];
            field_dic["button"]=(json_obj.columns[i]["status"]=="LIVE")?"<button disabled='disabled'>Button Text</button>":"<button>Button Text</button>";
            Fields[i]=field_dic;
            Tool_columns[i]=tool_dic;
        }
    

    循环读取“状态”值并相应地设置值。

    for(i=0;i<json_obj.data.length;i++){
        if(json_obj.data[i]["Status"]=="Yes"){
           json_obj.data[i]["Status"]="<button disabled='disabled'>Button Text</button>";
        }
        else{
            json_obj.data[i]["Status"]="<button>Button Text</button>";
        }
    }
    

    【讨论】:

    • console.log(json_obj.columns[i]["Status"]); 将“未定义”记录到控制台。
    • ??...我只是举例说明了如何读取状态并基于此设置数据表行的 html。如果您想要确切的答案,请分享您正在处理的数据的结构。否则尝试访问状态列并相应地编写逻辑
    • 在问题中添加了数据的类型/结构
    • 谢谢。我能够读取状态值并相应地设置 aaData。将添加到您的代码中
    • 欢迎您,如果您得到解决方案,请将答案标记为正确。如果您想编辑和添加正确的代码,您也可以这样做以帮助社区
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    相关资源
    最近更新 更多