根据每行的特定列值启用/禁用单元格编辑

时间:2015-01-30 16:31:48

标签: jquery datatables jquery-datatables jquery-datatables-editor

我有一个jquery可编辑数据表,所有列都是可编辑的。我想根据特定的单元格值启用/禁用单元格编辑。例如,在下表中,如果操作系统值为" Windows" make column" FileExtension"作为不可编辑的,如果操作系统的价值是" Unix"列#34;语言"不可编辑。

 --------------------------------------------------
| OperatingSystem  FileExtenstion   Language       |
 --------------------------------------------------
| Windows          non-editable     editable       |
| Unix             editable         non-editable   |
| Windows          non-editable     editable       |
 --------------------------------------------------

通过Ajax源动态填充表。

$(document).ready(function () {
        $("#dbResultsTable").dataTable({
            "bServerSide": true,
            "sAjaxSource": "/EditableTables/TableEditAjaxRequest",
            "bProcessing": true,
            "sPaginationType": "full_numbers",
            "bJQueryUI": false,
            "scrollX" : true,
             "aoColumns": [
                          {  "sName": "OperatingSystem",
                          },
                           {
                             "sName": "FileExtenstion",
                            },
                             { 
                              "sName": "Language",
                             }
                  ]
     }).makeEditable({
        "aoColumns": [
                          {
                              cssclass: "required"
                          },
                            {
                              cssclass: "required"
                          },
                          {
                              cssclass: "required"
                          }
                      ]
                      }
                      );
    });

有可能吗?

1 个答案:

答案 0 :(得分:0)

好的我找到了一种方法来做到这一点,我希望它有所帮助。

$("#dbResultsTable tr").live("mousedown", function() {
        if ($(this).find("td:eq(0)").text()=="Windows") {
            $(this).find("td:eq(1)").empty().unbind(); 
        } else if($(this).find("td:eq(0)").text()=="Unix"){
             $(this).find("td:eq(2)").empty().unbind(); 
            }
    }); 

注意: - 但是如果您的单元格有一些数据并且您已使用上述功能清除+禁用它,则不会更新服务器端的数据。您必须进行ajax调用并更新单元格数据。

如果有更好的方法,请告诉我,我很满意。